Divide and Sum CodeForces - 1445D(排列组合+逆元)

题意:

给定一个长度为2n的数组,将数组分成两个长度为n的数组p,q,将p从小到大排序,将q从大到小排序,对于每种分法,f(p,q)=∑i=1n\sum_{i=1}^{n}i=1n|xi−yi|.求总和

题目:

You are given an array a of length 2n. Consider a partition of array a into two subsequences p and q of length n each (each element of array a should be in exactly one subsequence: either in p or in q).

Let’s sort p in non-decreasing order, and q in non-increasing order, we can denote the sorted versions by x and y, respectively. Then the cost of a partition is defined as f(p,q)=∑i=1n\sum_{i=1}^{n}i=1n|xi−yi|

Find the sum of f(p,q) over all correct partitions of array a. Since the answer might be too big, print its remainder modulo 998244353.

Input

The first line contains a single integer n (1≤n≤150000).

The second line contains 2n integers a1,a2,…,a2n (1≤ai≤109) — elements of array a.

Output

Print one integer — the answer to the problem, modulo 998244353.

Examples

Input

1
1 4

Output

6

Input

2
2 1 2 1

Output

12

Input

3
2 2 2 2 2 2

Output

0

Input

5
13 8 35 94 9284 34 54 69 123 846

Output

2588544

Note

Two partitions of an array are considered different if the sets of indices of elements included in the subsequence p are different.

In the first example, there are two correct partitions of the array a:

p=[1], q=[4], then x=[1], y=[4], f(p,q)=|1−4|=3;
p=[4], q=[1], then x=[4], y=[1], f(p,q)=|4−1|=3.
In the second example, there are six valid partitions of the array a:

p=[2,1], q=[2,1] (elements with indices 1 and 2 in the original array are selected in the subsequence p);
p=[2,2], q=[1,1];
p=[2,1], q=[1,2] (elements with indices 1 and 4 are selected in the subsequence p);
p=[1,2], q=[2,1];
p=[1,1], q=[2,2];
p=[2,1], q=[2,1] (elements with indices 3 and 4 are selected in the subsequence p).

分析:

1.考虑将a先从小到大排序后,可以分成前后两块,其中因为p,q的长度是固定的n。
2.求和是每个对应值差的绝对值。可以看作任意两个值交换集合,因为得到差值的绝对值相同,这里顺序对结果没有影响。
3.前面对a排序,所以对于每种方案,一定是右块的数去减左块的数,其值和为ans;
4.而所有的排列总数是CmnC_{m}^{n}Cmn(m=2*n),所以总的答案ans=ans ×Cmn\times C_{m}^{n}×Cmn
5.由于是大数需要求余,CmnC_{m}^{n}Cmn=m!n!(m−n)!\frac{m!}{n!(m-n)!}n!(mn)!m!,只需拆开来算时求n!×n!\timesn×(m−n)!(m-n)!(mn)!的逆元即可,又n==m-n,只需求 n!n!n!的逆元即可,即根据费马小定理和快速幂求n!mod−2n!^{mod-2}n!mod2.

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define mod 998244353
typedef long long ll;
const int M=3e5+5;
int n,m;
ll ans,num,a,b,dp[M];
ll dfs(ll x,int y){ll ans=1;while(y){if(y&1) ans=ans*x%mod;y>>=1;x=x*x%mod;}return ans;
}
int main(){cin>>n;m=n<<1;for(int i=0;i<m;i++)cin>>dp[i];sort(dp,dp+m);for(int i=0;i<n;i++)ans=(ans+dp[n+i]-dp[i])%mod;a=b=1;for(int i=2;i<=m;i++){b=b*i%mod;if(i==n)a=b;}num=dfs(a,mod-2);ans=ans*b%mod*num%mod*num%mod;cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Java基础]自定义注解之属性定义

代码如下: package AnnoDemo01;public enum Person {p1,p2; }package AnnoDemo01;public interface MyAnno2 {}package AnnoDemo01;public interface MyAnno {int show1();String show2();Person per();MyAnno2 ann02();String[] strs(); }定义了属性&#xff0c;在使用时需要…

微软开源 Tye 项目,可简化微服务开发

微软近期开源了一款开发人员工具 Tye&#xff0c;能够用于简化微服务以及分布式应用程序的开发、测试以及部署过程。项目地址&#xff1a;https://github.com/dotnet/tye。该项目负责人 Amiee 表示&#xff0c;在构建由多个项目组成的应用程序时&#xff0c;开发者通常希望能够…

Subset POJ - 3977(折半枚举+二分+二进制枚举)

题意&#xff1a; 给你一个集合N&#xff08;N<35&#xff09;,问集合的子集&#xff0c;除了空集&#xff0c;使得自己中所有元素和的绝对值最小&#xff0c;若存在多个值&#xff0c;那么选择子集中元素最少的那个。 题目&#xff1a; Given a list of N integers with…

.NET内存管理五大基础知识

1.小对象怎么处理的&#xff1f;小型.NET对象被分配到小型对象堆&#xff08;SOH&#xff09;上。其中有3种&#xff1a;第0代&#xff0c;第1代和第2代。对象根据其寿命向上移动。将新对象放在Gen 0上。当Gen 0充满时&#xff0c;.NET垃圾收集器&#xff08;GC&#xff09;运行…

L1-046 整除光棍 (20分)(模拟除法竖式求商的位运算)

题目&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#…

Sql Server之旅——第十站 简单说说sqlserver的执行计划

我们知道sql在底层的执行给我们上层人员开了一个窗口&#xff0c;那就是执行计划&#xff0c;有了执行计划之后&#xff0c;我们就清楚了那些烂sql是怎么执行的&#xff0c;这样 就可以方便的找到sql的缺陷和优化点。一&#xff1a;执行计划生成过程说到执行计划&#xff0c;首…

【半译】扩展shutdown超时设置以保证IHostedService正常关闭

我最近发现一个问题&#xff0c;当应用程序关闭时&#xff0c;我们的应用程序没有正确执行在IHostedService中的StopAsync方法。经过反复验证发现&#xff0c;这是由于某些服务对关闭信号做出响应所需的时间太长导致的。在这篇文章中&#xff0c;我将展示出现这个问题的一个示例…

java基础知识——基础语法

java的基本语法格式 [修饰符] class 类名{程序代码 }方法的定义 一般情况下&#xff0c;定义一个方法包含以下语法&#xff1a; 修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值; }JAVA标识符规范&#xff1a; 1.标识符可以由任意顺序的大小写字母、…

[JavaWeb-MySQL]多表关系介绍

多表之间的关系 1. 分类&#xff1a;1. 一对一(了解)&#xff1a;* 如&#xff1a;人和身份证* 分析&#xff1a;一个人只有一个身份证&#xff0c;一个身份证只能对应一个人2. 一对多(多对一)&#xff1a;* 如&#xff1a;部门和员工* 分析&#xff1a;一个部门有多个员工&am…

Asp.Net Core多榜逆袭,这是.NET最好的时代!

摒弃侥幸之念&#xff0c;必取百炼成钢。厚积分秒之功&#xff0c;始得一鸣惊人&#xff01;经过多年的沉沦&#xff0c;.NET终于迎来逆袭&#xff01;近期连出多个排行榜&#xff0c;Asp.Net Core直接霸榜&#xff0c;这意味着属于.Neter的好时代的即将到来&#xff01;.Net C…

[JavaWeb-MySQL]数据库的备份和还原

数据库的备份和还原 1. 命令行&#xff1a;* 语法&#xff1a;* 备份&#xff1a; mysqldump -u用户名 -p密码 数据库名称 > 保存的路径* 还原&#xff1a;1. 登录数据库2. 创建数据库3. 使用数据库4. 执行文件。source 文件路径 2. 图形化工具&#xff1a;备份完成!!! 现…

SiteServer CMS 新版本 V6.15(2020年6月1日发布)

欢迎来到 SiteServer CMS V6.15版本&#xff0c;新版本重点增加了 REST API 的接口调用&#xff0c;同时修复了多项BUG:REST API 接口增强&#xff1a;通过REST API&#xff0c;第三方系统可以很好地集成 SiteServer CMS&#xff0c;以下是最新的API接口&#xff0c;涵盖了CMS操…

JAVA中小细节(易忽视和易错点)

在为一个long类型的变量赋值时&#xff0c;所赋值的后面要加上一个字母L&#xff08;l&#xff09;&#xff0c;说明赋值为long类型&#xff0c;但如果赋值未超出int取值范围&#xff0c;可以忽略。在为一个float类型的变量赋值时&#xff0c;所赋值的后面要加上一个字F&#x…

[JavaWeb-MySQL]多表查询(内连接,外连接,子查询)

多表查询的分类&#xff1a; 1. 内连接查询&#xff1a;1. 隐式内连接&#xff1a;使用where条件消除无用数据* 例子&#xff1a;-- 查询所有员工信息和对应的部门信息SELECT * FROM emp,dept WHERE emp.dept_id dept.id;-- 查询员工表的名称&#xff0c;性别。部门表的名称SE…

全局变量初始化顺序探究

缘起 我在上一篇文章——《调试实战 —— dll 加载失败之全局变量初始化篇》中&#xff0c;跟大家分享了一个由于全局变量初始化顺序导致的 dll 加载失败的例子。感兴趣的小伙伴儿可以点击阅读。虽然我们知道了是由于全局变量初始化顺序导致的问题&#xff0c;也给出了解决方案…

java基础知识——面向对象基本概念

文章目录Java基本概念源文件声明规则Java包Import语句继承类型继承的特性继承关键字super 与 this 关键字构造器方法的重写规则重载(Overload)重写与重载之间的区别java 接口接口与类相似点&#xff1a;接口与类的区别&#xff1a;接口特性抽象类和接口的区别接口的声明接口的实…

[JavaWeb-MySQL]多表查询练习

-- 部门表 CREATE TABLE dept (id INT PRIMARY KEY PRIMARY KEY, -- 部门iddname VARCHAR(50), -- 部门名称loc VARCHAR(50) -- 部门所在地 );-- 添加4个部门 INSERT INTO dept(id,dname,loc) VALUES (10,教研部,北京), (20,学工部,上海), (30,销售部,广州), (40,财务部,深圳)…