版权声明:既然是蒟蒻写的文,那么各位大爷就将就着看吧~ 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=1n∑j=12nPi,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个放在后面
那么
Pi,j=(j−1i−1)(2n−jn−i)(n!)2(2n!)2
接下来我们来化简式子,比如考虑(n-i+1)(j-i)这一项,将组合数划开:
∑j=12n∑i=1n(n−i+1)(j−i)(j−1)!(2n−j)!(j−i)!(i−1)!(n−i)!(n−j+i)!
考虑把(n-i+1)变成(n-i),额外多出一项,那么式子变成了
∑j=12n∑i=1n(n−i)(j−i)(j−1)!(2n−j)!(j−i)!(i−1)!(n−i)!(n−j+i)!
∑j=12n∑i=1n(j−1)!(2n−j)!(j−i−1)!(i−1)!(n−i−1)!(n−j+i)!
我们尝试把右边再写成组合数的形式
∑j=12n∑i=1n(j−1)(2n−j)(j−2)!(2n−j−1)!(j−i−1)!(i−1)!(n−i−1)!(n−j+i)!
∑j=12n∑i=1n(j−1)(2n−j)(j−2i−1)(2n−j−1n−i−1)
根据范德蒙恒等式,原始式子就变成了
∑j=12n(j−1)(2n−j)(2n−3n−2)
组合数可以和前面的
n!(n−1)!2n!
约掉
另外三项也可以用相同的方法化成只和j相关的式子*一个组合数
我们最后的式子就变成了
14n−2∑j=12n(j−1)(2n−j+1)
然后运用一些基础的知识可以把式子变成
4n2+2n12
!
加上
n(n−1)4
就变成了
7n2−n12
!
也就是说上面这么一大串式子最后可以O(1)出解
是不是很奇妙呢