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] 小的数\)

直接做即可。

posted @ 2025-02-26 22:52  邻补角-SSA  阅读(17)  评论(0)    收藏  举报