首页 > 其他分享 >CF1768E Partial Sorting

CF1768E Partial Sorting

时间:2023-01-11 18:56:32浏览次数:66  
标签:Sorting Partial inv CF1768E fact 2n ll sim MOD

可能更好的阅读体验

题目传送门

题目翻译

题目解析

显然我们可以证明 \(f(p)\in\{0,1,2,3\}\)

\(f(p)=0\) 显然只有 \(s_1=1\) 种。

考虑 \(f(p)=1\)
如果前面交换一次,那么有 \((2n)!\) 种。只交换后面同理。
考虑交换前后都可以的重复情况,那么就是 \(n!\) 种。
容斥得 \(s_2=2\times(2n)!-n!\)

考虑 \(f(p)=2\)
如果前面交换一次然后后面交换,那么只需要保证 \(1\sim n\) 全部在 \(1\sim 2n\) 位置内。方案数是

\[\binom{n}{2n}\times(2n)! \]

如果是先交换后面同理。
考虑重复的情况,也就是 \(1\sim n\) 全部在 \(1\sim 2n\) 位置,并且 \(2n+1\sim 3n\) 全部在 \(n+1\sim 3n\) 位置。
枚举 \(1\sim n\) 在 \(n+1\sim 2n\) 位置内的数量,可以得到重复的方案为

\[M=\sum_{i=0}^{n}\binom{i}{n}\binom{n-i}{n}\binom{n}{2n-i}\times (n!)^3 \]

所以

\[s_3=2\times\binom{n}{2n}\times(2n)!-M \]

\(f(p)=3\) 直接用来减就好了,\(s_4=(3n)!-s_1-s_2-s_3\)

答案就是 \(s_2+2s_3=3s_4\)

int n,MOD; ll fact[maxn],inv[maxn],s1,s2,s3,s4,M;
ll fastpow(ll x,ll y){
	ll tmp=x%MOD,res=1;
	while(y){
		if(y&1) res=res*tmp%MOD;
		y>>=1; tmp=tmp*tmp%MOD;
	} return res;
}
#define P(n,m) (fact[n]*inv[(n)-(m)]%MOD)
#define C(n,m) (fact[n]*inv[m]%MOD*inv[(n)-(m)]%MOD)
int main(){
	n=read(); MOD=read(); int i; fact[0]=1; for(i=1;i<=n*3;i++) fact[i]=fact[i-1]*i%MOD;
	inv[2*n]=fastpow(fact[2*n],MOD-2); for(i=n*2-1;i>=0;i--) inv[i]=inv[i+1]*(i+1)%MOD;
	s1=1; s2=2*fact[2*n]-fact[n]+MOD-1; s2%=MOD;
	M=0; for(i=0;i<=n;i++) M+=C(n,i)*C(n,n-i)%MOD*P(2*n-i,n)%MOD,M%=MOD;
	M*=fact[n]*fact[n]%MOD,M%=MOD;
	s3=2*P(2*n,n)*fact[2*n]%MOD-M-(s1+s2); s3%=MOD,s3+=MOD,s3%=MOD;
	s4=fact[3*n]-s1-s2-s3; s4%=MOD,s4+=MOD,s4%=MOD;
	print((s2+s3*2+s4*3)%MOD); return 0;
}

标签:Sorting,Partial,inv,CF1768E,fact,2n,ll,sim,MOD
From: https://www.cnblogs.com/jiangtaizhe001/p/17044655.html

相关文章

  • CF1768E Partial Sorting - 组合数学 -
    题目链接:https://codeforces.com/contest/1768/problem/E题解:记P1为将\(1..2\timesn\)排序,P2为将\(n+1..3\timesn\)排序首先观察到答案一定不会超过3(P1P2......
  • D. Absolute Sorting
    D.AbsoluteSorting思路:如果a[i]>=a[i-1],那么我们最大可以减去(a[i]+a[i-1])/2,这样减完依旧是满足a[i]>=a[i-1]的。因此我们可以把所有满足a[i]>=a[i-1]......
  • MVC如何将用户控件(分部视图,RenderPartial,ViewUserControl)内容转换为字符串并输出
     //将用户控件转换为字符串01publicstaticstringRenderPartialToString(stringfile,objectview)02{03ViewDataDictionaryvd=newViewDataDicti......
  • 一个有点咬文嚼字的 sorting 和 ordering
    为什么排序算法的英文是sorting而不是ordering。还真没有怎么研究过这个问题,一般来说数据库中对结果进行排序我们都习惯用OrderBy这个关键字。所有有关算法的排序......
  • USACO 2019 January Contest, Bronze Problem 2. Sleepy Cow Sorting
    SleepyCowSorting分类讨论先把答案本就连续的特判丢掉最大值最大值就尽量把每个空位都踩一遍,模拟一下会发现,第一跳的空隙一定没办法踩到,因此考虑两边第一跳谁......
  • CF1707D Partial Virtual Trees
    首先真子集这一限制比较麻烦,我们可以尝试把这个限制给去除掉。具体地,令\(G(i)\)表示答案,\(F(i)\)为用\(i\)步使得\(U={1}\)且不要求真子集这一限制的方案数。考虑......
  • Codeforces875B-Sorting the Coins
    SortingtheCoinsRecently,DimametwithSashainaphilatelicstore,andsincethentheyarecollectingcoinstogether.Theirfavoriteoccupationistosortco......
  • [图论记录]arc124D Yet Another Sorting Problem
    题意:给定长度为\(n+m\)的排列\(p\),其中\(1-n\)位置为白色,\(n+1-n+m\)位置为黑色,每次交换一个白色位置与一个黑色位置的数,求把\(p\)变成升序的最少操作次数。link......
  • 【BOI2007】Ranklist Sorting
    【BOI2007】RanklistSortingDescription有一个长为\(n\)的排列\(p\)每次可以选两个位置\(i,j\),然后将\(p_i\)放到\(j\)的位置上,代价为\(i+j\)求将排列变为降序的最小......
  • AtCoder Beginner Contest 277 F Sorting a Matrix
    SortingaMatrix拓扑序首先可以明确无论怎么交换行列,原本在同一行或者同一列的元素,还是会处于同一行或者同一列条件一每行每行地看,如果能满足从小到大的条件,说明第......