主席树
2
我们想要先求前缀的第 \(k\) 小,我们离散化后一个一个加点,相当于一个平衡树的构造方法,对这个数离散化后的排行放入,向上传递点数,我们查询时就可以右端点的根的左子树大小减左端点根左子树的大小就是区间左边的数,我们查询的第 \(k\) 小如果小于左就进入左子树搜索,否则我们就去右子树然后 \(k-l_{siz}\),这其实就是平衡树搜索过程,主席树也就是个前缀的概念。
P3567
同样道理,只不过这次是直接用到了节点数,我们不断向下找子树中大于区间一半的点,不断向下直到找到一个点。
P2617
也是主席树题,不过带上了单点修改,但我们知道主席树的本质就是有 \(n\) 个根的前缀和,查询时也就是前缀和相减,但是这个操作其实就可以用树状数组做,单点修改和前缀和,所以这就是主席树套树状数组的模板题,查询时额外地算一遍树状数组的前缀和。
\(O(n\log^2 n)\)
P2464
带修莫队模板题,但可以用带修主席树做,其实和上一题一样,只不过变成了具体的数,直接树上查找然后输出树状数组维护的区间和。