偏序问题就是一个元素有若干属性,然后统计所有属性都有序的数对个数。
对于此类问题,思路是先消到一维,再统计答案。
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$ 分治,每次分治,只考虑前半部分对后半部分的贡献,用后半部分查询,统计还是用树状数组。