摘要: ZKW线段树 数组定义 const ll M=1<<19;//从1开始,不能修改0和M ll T[M+M]; 单点修改区间查询 void modify(int n,int v){ for(T[n+=M]=v,n>>=1;n;n>>=1) T[n]=T[n+n]+T[n+n+1]; } ll quer 阅读全文
posted @ 2019-07-31 14:05 UCPRER 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 原理 选择子树最大的儿子, 将其归入当前点所在 的同一条重链,结束后树被分为一系列序号(dfs序)连续的重链,利用数据结构(线段树)来维护这些链的信息,最终可以实现树上的链操作(树链查询、树链修改)。 概念 重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点; 轻儿子:父亲节点中除了 阅读全文
posted @ 2019-07-31 12:56 UCPRER 阅读(255) 评论(0) 推荐(0) 编辑