动态逆序对
[CQOI2011] 动态逆序对
考虑 CDQ
分治。
可以对于每个数记录一个时间戳,表示它被删除的时间(为了树状数组的维护方便,我们记时间戳越大者删除时间越早)。然后逆序对的下标是一维,数值是一维,转换成了一个三维偏序问题。我们对于每个数,考虑由它构成的逆序对,且它的时间戳为二者中较大者构成的逆序对数量。考虑对于 \(j\) 有两种可能,\(t_i<t_j,p_i<p_j,a_i>a_j\) 或 \(t_i<t_j,p_i>p_j,a_i<a_j\),这两种情况可以做两遍三维偏序,然后在第二遍时可以进行归并排序。
时间复杂度 \(O(n\log^2n)\)。