Tsinsen D483 monkey_sort

// 内部资料
传送门
题目大意

给定一个长度为 n ( 1 n 500000 ) 的排列 a 。定义一次操作为交换不同位置的两个元素。求进行了 m 次操作后该排列逆序对的期望。

考场上的思路

m = 0 我会做! O ( n log n ) 求逆序对!

思路

考虑每一对位置对答案的贡献(期望的线性性)。设 f i , j , k 表示进行了 i 次操作, a j < a k 的概率。那么边界条件为:

f 0 , j , k = [ a j < a k ]

最终答案为:

j > k f m , j , k × 1

状态转移方程为:

f i , j , k = j j f i , j , k + k k f i 1 , j , k + f i 1 , k , j + ( n ( n 1 ) 2 ( n 2 ) ( n 2 ) 1 ) f i 1 , j , k

(这里省去了除以事件总数)

( n ( n 1 ) 2 ( n 2 ) ( n 2 ) 1 ) 这个系数表示选到了 j k 之外的情况数。这个状态转移方程的含义是看交换了那两个元素,对 ( j , k ) 有什么影响。

前面的两个和式可以计算出所有的后再减去自己,这样时间复杂度就是 O ( n 3 )


猜你喜欢

转载自blog.csdn.net/lycheng1215/article/details/80775742