[牛客网Wannafly挑战赛23E]排序

版权声明:既然是蒟蒻写的文,那么各位大爷就将就着看吧~ https://blog.csdn.net/alan_cty/article/details/82356254

Description

随机一个2*n的排列,将奇数位从小到大排序,求逆序对个数的期望
比如说,4,6,1,5,3,2排序后会变成1,6,3,5,4,2,逆序对个数为8
n<=5e7

Solution

做了好几节数学课的说
根据期望的线性性,我们只需要枚举两个位置,将这两个位置为逆序对的概率相加
偶数位和偶数位之间的显然是n*(n-1)/4,奇数位和奇数位之间的显然为0,我们只需要考虑奇数和偶数
考虑枚举第i个奇数位是j,在i后面的偶数位都是等价的,同理在i前面的偶数位也都是等价的
设Pi,j表示第i个奇数位是j的排列的概率,那么这部分的答案为:

i = 1 n j = 1 2 n P i , j ( n i + 1 ) ( j i ) + ( i 1 ) ( n j + i ) n

考虑Pi,j,相当于从j-1个比j小的数中选择i-1个放在i前面,从2n-j个比j大的数中选择n-i个放在后面
那么
P i , j = ( i 1 j 1 ) ( n i 2 n j ) ( n ! ) 2 ( 2 n ! ) 2

接下来我们来化简式子,比如考虑(n-i+1)(j-i)这一项,将组合数划开:
j = 1 2 n i = 1 n ( n i + 1 ) ( j i ) ( j 1 ) ! ( 2 n j ) ! ( j i ) ! ( i 1 ) ! ( n i ) ! ( n j + i ) !

考虑把(n-i+1)变成(n-i),额外多出一项,那么式子变成了
j = 1 2 n i = 1 n ( n i ) ( j i ) ( j 1 ) ! ( 2 n j ) ! ( j i ) ! ( i 1 ) ! ( n i ) ! ( n j + i ) !

j = 1 2 n i = 1 n ( j 1 ) ! ( 2 n j ) ! ( j i 1 ) ! ( i 1 ) ! ( n i 1 ) ! ( n j + i ) !

我们尝试把右边再写成组合数的形式
j = 1 2 n i = 1 n ( j 1 ) ( 2 n j ) ( j 2 ) ! ( 2 n j 1 ) ! ( j i 1 ) ! ( i 1 ) ! ( n i 1 ) ! ( n j + i ) !

j = 1 2 n i = 1 n ( j 1 ) ( 2 n j ) ( i 1 j 2 ) ( n i 1 2 n j 1 )

根据范德蒙恒等式,原始式子就变成了
j = 1 2 n ( j 1 ) ( 2 n j ) ( n 2 2 n 3 )

组合数可以和前面的 n ! ( n 1 ) ! 2 n ! 约掉
另外三项也可以用相同的方法化成只和j相关的式子*一个组合数
我们最后的式子就变成了
1 4 n 2 j = 1 2 n ( j 1 ) ( 2 n j + 1 )

然后运用一些基础的知识可以把式子变成
4 n 2 + 2 n 12
!
加上 n ( n 1 ) 4 就变成了 7 n 2 n 12
也就是说上面这么一大串式子最后可以O(1)出解
是不是很奇妙呢

猜你喜欢

转载自blog.csdn.net/alan_cty/article/details/82356254