摘要:
重链剖分 用途 路径上维护 子树维护 求最近公共祖先(LCA) 重剖的性质: 树上每个节点都属于且仅属于一条重链。 在剖分时 重边优先遍历,最后树的 DFS 序上,重链内的 DFS 序是连续的。按 DFN 排序后的序列即为剖分后的链。 定义 重儿子:对于每一个非叶子节点,它的儿子中以那个儿子为根的子 阅读全文
摘要:
求最长公共前后缀(前置知识) for(int i=2,k=0;i<=m;i++) { while(k&&t[k+1]!=t[i])k=nxt[k]; if(t[k+1]==t[i])k++; nxt[i]=k; } 这种比较有性质的东西,推一推就懂了(感觉比较简单)。就是利用之间处理好的border 阅读全文
摘要:
维护历史值 当要修改一个节点时,把跟他有关的线段树中所有节点舍弃,并建立新节点连接. 代码如下: #include <bits/stdc++.h> using namespace std; const int N=1e6+5; int n,m,a[N],root[N],top; struct nod 阅读全文
摘要:
P4097 【模板】李超线段树 前置知识 线段树的基本思路 初中八年级基础知识 大体思路 李超线段树利用线段树思想, 可以支持维护支持区间插入线段,与单点查询最值。 在线段树中,每个节点存放线段的下标,同时,存的这一条线段在该区间内大部分处于比其他线段更高的位置 具体思路 变量 int n,cnt; 阅读全文