树链剖分
文章平均质量分 54
guapi2333
这个作者很懒,什么都没留下…
展开
-
P2590 [ZJOI2008]树的统计
有些细节的树链剖分模板题原创 2021-05-23 23:28:04 · 92 阅读 · 0 评论 -
树链剖分学习笔记(P3379&P3384)
树链剖分求LCA及树上基本修改查询问题原创 2021-05-23 23:26:00 · 107 阅读 · 0 评论 -
树链剖分(1) 树剖求LCA
先看一个树剖的经典应用:初始化:先DFS一遍子树,统计出每一个点x的重儿子son[x]和以x为根节点的子树的大小siz[x],这里选择x中子树大小最大的儿子作为它的重儿子,第二遍dfs划分树链:重儿子与其父亲节点划分到一条链。其他的儿子为x的轻儿子,但属于新的链的顶端元素。void dfs1(int x,int father,int dep)//主要统计siz和son { fa[...原创 2018-10-22 17:24:00 · 276 阅读 · 0 评论 -
树链剖分(2)树剖的较高级应用(P3384 【模板】树链剖分)
参照洛谷模板 P3384 【模板】树链剖分 题意:给你一棵包含n个结点的树,现要求你支持以下操作:1.x到y结点最短路径上所有节点的值都加上z;2.求树从x到y结点最短路径上所有节点的值之和;3.将以x为根节点的子树内所有节点值都加上z;4.求以x为根节点的子树内所有节点值之和。正确的思路是树链剖分套线段树。我们可以求一个dfs序(dfn[]),这个dfs序与之前求to...原创 2018-10-22 21:40:39 · 227 阅读 · 0 评论 -
P2146 [NOI2015]软件包管理器
很好的树剖板子题:操作一:求点x到0的最短路径 经过的结点个数-路径上已安装的软件包的总个数,同时将经过的路径上的所有点标记为已安装。操作二:将子树代表的那段存安装包个数的区间清空(或者是说将其sum值赋值为0)。此处为了实现标记已安装和清空,我们用了一个标记add:add[i]=1:线段树上的点i及其子区间全被赋值为len[];add[i]=2:线段树上的点i及其子区间全被赋...原创 2018-10-23 20:49:23 · 143 阅读 · 0 评论 -
P2590 [ZJOI2008]树的统计
操作:I. CHANGE u t : 把结点u的权值改为tII. QMAX u v: 询问从点u到点v的路径上的节点的最大权值III. QSUM u v: 询问从点u到点v的路径上的节点的权值和标签:树剖+线段树 模板题。转化一下题意:操作1:单点修改。操作2:利用树剖求LCA的过程求经过的点的权值的最大值。操作3:利用树剖求LCA的过程累加经过的点的权值之和。...原创 2018-10-26 13:23:09 · 105 阅读 · 0 评论