偏序问题

偏序问题就是一个元素有若干属性,然后统计所有属性都有序的数对个数。

对于此类问题,思路是先消到一维,再统计答案。

1、二位偏序

例题:逆序对

其实在开始 \(i < j\) 这一维度就已经排好序了,现在剩下 \(a_i\) 这一维,发现可以对树状数组上 \(a_i\) 这个点加一,\(query(a_i)\) 就是 \(j < i\)\(a_j \le a_i\),那么 \(i - query(a_i)\) 就是答案。

考虑这样做是对值域开树状数组,明显开不下,怎么办捏?

那就先对 \(a_i\) 排序,然后用树状数组存 \(i\) 的维度,这样是能开下的。

复杂度 \(O(nlogn)\)

2、三位偏序

例题:陌上开花

先排序,消除一维,然后 CDQ 分治,每次分治,只考虑前半部分对后半部分的贡献,用后半部分查询,统计还是用树状数组。

复杂度 \(O(nlog^2n)\)

CDQ分治前往下一篇

posted @ 2024-12-21 10:36  lichenxi111  阅读(83)  评论(0)    收藏  举报
浏览器标题切换
浏览器标题切换end