偏序问题就是一个元素有若干属性,然后统计所有属性都有序的数对个数。
对于此类问题,思路是先消到一维,再统计答案。
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\) 分治,每次分治,只考虑前半部分对后半部分的贡献,用后半部分查询,统计还是用树状数组。
标签:偏序,数组,树状,问题,一维,query,例题 From: https://www.cnblogs.com/lichenxi111/p/18620503