树链剖分
bandiaoz_cjl
这个作者很懒,什么都没留下…
展开
-
洛谷 P2680 运输计划 树链剖分+LCA+树上差分+二分
洛谷 P2680 运输计划题意给你一个 nnn 个点的树,对于 n−1n-1n−1 条边各有边权,给出一些点对 (x,y)(x,y)(x,y) ,同时定义 dis(x,y)dis(x,y)dis(x,y) 表示 x,yx,yx,y 两点间的树上距离,现允许你将一条边的权值变为 000 ,请你最小化最大的 dis(x,y)dis(x,y)dis(x,y) 的值。解法为了使最长路径最短,考虑二分答案。那么如何判断 midmidmid 值是否可行呢。我们可以求出每一条路径的距离,如果这个距离大于原创 2020-10-06 01:39:55 · 92 阅读 · 0 评论 -
洛谷 P3979 遥远的国度 树链剖分换根
洛谷 P3979 遥远的国度题意有一棵 nnn 个城市组成的树,每个城市有一个防御值,根节点的编号是 rrr ,有 mmm 次操作:op=1op=1op=1 ,把首都修改为 ididid 。op=2op=2op=2 ,把 xxx 到 yyy 路径上的所有防御值修改为 vvv 。op=3op=3op=3 ,询问以 xxx 为根的子树的最小防御值。解法裸的换根树链剖分。对于路径上的修改是和根无关的。根的修改只影响子树。树链剖分支持换根,一开始以 111 为根建树。如果 lca(now原创 2020-09-12 23:20:30 · 112 阅读 · 0 评论 -
洛谷 P5478 [BJOI2015]骑士的旅行 树链剖分
洛谷 P5478 [BJOI2015]骑士的旅行题意有一棵 nnn 个城市组成的树,有 mmm 个骑士在各个城市中,骑士有一个武力值 f[i]f[i]f[i] 。需要进行 mmm 次操作:输出从 xxx 到 yyy 路径上的所有城市中最大的 kkk 个骑士的武力值。编号为 xxx 的骑士搬到城市 yyy 。编号为 xxx 的骑士武力值变为 yyy 。数据范围: 1≤n,m≤4⋅1041\le n,m \le 4\cdot 10^41≤n,m≤4⋅104 ,1≤m≤8⋅1041 \le m \原创 2020-09-12 21:26:42 · 142 阅读 · 0 评论 -
洛谷 P2486 [SDOI2011]染色 树链剖分
洛谷 P2486 [SDOI2011]染色题意有一棵 nnn 个结点的无根树,每个结点有一个颜色,有 mmm 个操作,操作分两种:将结点 aaa 到结点 bbb 路径上的所有结点颜色都染成 ccc 。询问结点 aaa 到结点 bbb 路径上颜色段的数量。颜色段的定义是极长的连续相同颜色被认为是一段。例如 112221 由三段组成:11、222、1。解法树链剖分树上路径操作的修改与询问,考虑使用树链剖分。维护区间内颜色段的数量,考虑使用线段树,维护区间内颜色段的数量和两端的颜色。区间原创 2020-09-12 14:21:12 · 75 阅读 · 0 评论 -
洛谷 P2146 [NOI2015]软件包管理器 树链剖分
洛谷 P2146 [NOI2015]软件包管理器题意给定一棵 nnn 个结点的树,有 mmm 次操作,格式如下:安装 xxx 软件包卸载 xxx 软件包安装软件包需要先安装所有依赖的软件包,即从根节点到当前节点的一条链。卸载软件包需要先卸载所有依赖这个软件的软件包,即这个结点的所有子树。每次操作需要先输出这次操作会改变多少软件包的状态,随后应用这个操作。解法每次需要维护一条链或者子树的和,并进行区间赋值操作。使用树链剖分+线段树维护即可。区间赋值使用lazy tag标记赋值即可。原创 2020-09-11 22:09:57 · 135 阅读 · 0 评论 -
洛谷 [ZJOI2008]树的统计 树链剖分模板题
洛谷 [ZJOI2008]树的统计题意给定一棵树,有 nnn 个结点,每个结点都是一个权值 a[i]a[i]a[i] ,有 mmm 次操作。把结点 uuu 的权值改为 ttt 。询问从点 uuu 到点 vvv 的路径上结点的最大权值。询问从点 uuu 到点 vvv 的路径上结点的权值和。(n≤3⋅104,m≤2⋅105n\le 3\cdot 10^4,m\le 2 \cdot 10^5n≤3⋅104,m≤2⋅105)解法树链剖分模板题。维护树上路径的信息,考虑树链剖分。用原创 2020-09-11 20:57:06 · 85 阅读 · 0 评论