ABC380G 做题记录
ABC380G 做题记录
题目链接。
一句话题意:给你一个长度为 \(n\) 的排列和一个整数 \(k\),求进行一下操作后排列的逆序对数的期望:在 \(1\) 到 \(n-k+1\) 中随机选一个数 \(x\),反转 \(x\) 到 \(x+k-1\) 的所有数。
考虑到只有被选定的区间内部会改变逆序对个数,由 \([1,l-1]\) 和 \([r+1,n]\) 参与贡献的逆序对不会被改变。
于是答案为:
\[\sum\limits_{l,r} \dfrac{f(1,n)-f(l,r)+\dfrac{1}{2}\dbinom{2}{r-l+1}}{n-k+1}
\]
化简得:
\[f(1,n) + \dfrac{1}{2}\dbinom{2}{k} - \dfrac{1}{n-k+1}\sum\limits_{l,r} f(l,r)
\]
考虑 \(f(l,r)\) 怎么求。使用一个树状数组维护 \([l-1,r-1]\) 内的权值情况。则 \(rev = rev + [l,r - 1] 中比 a[r] 大的数 - [l, r - 1] 中比 a[l-1] 小的数\)。\(rev\) 为逆序对个数。
\(rev = rev + [l-1,r - 1] 中比 a[r] 大的数 - (a[l-1] > a[r]) - [l-1, r - 1] 中比 a[l-1] 小的数\)
直接做即可。

浙公网安备 33010602011771号