离散化
用线段树求区间第k大
以值为关键的线段树
如何离散化?预处理
可持久化线段树
多棵树
=>主席树
动态规划中的决策点的维护 可以用线段树维护
RMQ 求区间最大最小值
dp[N][k] 建立二维数组
从N位置往后 1 2 4 8 位的最大值
nlogn预处理 o(1)求出区间最大最小值
树链剖分 : 处理树上的区间问题
基于子孩子的个数剖分
基础剖分的不稳定性
解决方法 : 轻重链剖分
重链:子结点多的
LCA:
树链剖分做LCA(不如 st表)
st表:用 dfs 序中 找两个结点中最小的序号 (提前一遍dfs序预处理结点标号)
转化为RMQ区间最小值问题。
splay:玄学降复杂度
Rotate 左右旋
区间求和 区间修改/翻转
主要是用来做区间翻转
不断旋转让根节点成为 L-1 ,根节点的右孩子成为 R+1 ,如此根孩子的左孩子的范围就是 [L,R]