题目大意:有一个长为 n 的排列,有一部分数字丢失了,问你逆序对数的期望是多少。
题解:
答案的贡献分成三部分:
未知部分相当于一个随机排列,设未知数字的个数为
c
n
t
cnt
cnt,则未知数字之间的贡献为:
a
n
s
=
c
n
t
∗
(
c
n
t
−
1
)
4
ans = \frac{cnt * (cnt - 1)}{4}
ans=4cnt∗(cnt−1)
已知数字和已知数字之间的贡献:经典树状数组nlogn做法可以求得
未知数字和已知数字之间的贡献:对于一个已知数字 x x x,设它左边有 l e f t x left_x leftx个未知数字,比他大的未知数字有 g x g_x gx个,则它的贡献为: l e f t x ∗ g x c n t \frac{left_x * g_x}{cnt} cntleftx∗gx
理由:单独考虑每一个比 x 大的数字的贡献:设 y > x y > x y>x, y y y 有 l e f t x c n t \frac{left_x}{cnt} cntleftx的概率位于 x 的左边,与 x 形成一对逆序对,因此 y 对 x 的贡献为 1 ∗ l e f t x c n t 1 * \frac{left_x}{cnt} 1∗cntleftx,接着考虑所有比 x 大的未知数字,根据线性期望的性质,得到上式。