题解:AT_abc380_g [ABC380G] Another Shuffle Window

PineappleSummer

2024-11-17 12:47:40

Solution

G - Another Shuffle Window

对于一个长度为 k 的两两不同的序列,其期望逆序对数为 \dfrac{k\times (k-1)}{4}

因为序列中一共有 \dfrac{k\times (k-1)}{2} 对数,每一对为逆序对的概率为 \dfrac{1}{2},所以其期望逆序对数为 \dfrac{k\times (k-1)}{4}

设原序列的逆序对数为 C[i,i+k-1] 这个区间的逆序对数为 x

[i,i+k-1] 随机打乱之后,由于只改变了 [i,i+k-1] 这个区间内部的逆序对,整个序列期望的逆序对数变为 C-x+\dfrac{k\times (k-1)}{4}

那么只需要求出 x 就做完了。

[i,i+k-1] 的逆序对数为 x,那么将区间改变为 [i+1,i+k] 时逆序对数怎么变化呢?

区间平移过后,减少了 p_i 对答案的贡献,具体就是答案减少了 [i + 1,i+k-1] 中比 p_i 小的数的个数。

增加了 p_{i+k} 对答案的贡献,具体就是答案增加了 [i+1,i+k-1] 中比 p_{i+k} 大的数的个数。

上述操作用 Fenwick Tree 维护即可。

由于有 n-k+1 个区间,将每个区间的答案累加后,还要乘上 \dfrac{1}{n-k+1}

总时间复杂度 \mathcal O(n\log n)

参考代码