随笔分类 - 数据结构-树链剖分
摘要:树链剖分若不会的话可自行学习一下. 前两种操作是线性变换,模$2^{64}$可将线段树全部用unsigned long long 保存,另其自然溢出. 而取反操作比较不能直接处理,因为其模$2^{64}$的特殊性,可将其转化为线性变换. 显然 $$ x\equiv (2^{64} 1) x (mod
阅读全文
摘要:传送门:https://acm.ecnu.edu.cn/contest/105/problem/Q/ 一棵树,支持两种操作:给一条路径上的节点加上一个等差数列;求两点路径上节点和. 很明显,熟练剖分.用线段树维护链上的区间和,每个节点中记录等差数列的首项,公差和区间和.因为两个等差数列叠加之后还是等
阅读全文
摘要:题目:https://www.luogu.org/problemnew/solution/P4211 相当难的一道题,其思想难以用言语表达透彻。 对于每个查询,区间[L,R]中的每个点与z的lca肯定出现在z到根节点的路径上,则路径上的点会对结果产生贡献。那么可以对每个lca向根节点边走边给路径上的
阅读全文
摘要:题意:树上每个结点有自己的颜色,支持两种操作:1.将u到v路径上的点颜色修改为c; 2.求u到v路径上有多少段不同的颜色。 分析:树剖之后用线段树维护区间颜色段数。区间查询区间修改。线段树结点中维护的有:段数,左端点颜色,右端点颜色和懒惰标记。 当区间合并时,若左孩子的右端点颜色和右孩子的左端点颜色
阅读全文
摘要:链接:https://acm.ecnu.edu.cn/contest/103/problem/D/ 题意:给你一棵无向边连接的树,边的权值可以任意互换。有m次运输,每次的花费是点u到v路径上边的权值和。 必须在全部运输开始前安排好边的权值,求m次运输总的最小花费。 分析:肯定是边被覆盖次数越多的边优
阅读全文
摘要:题意:也是树链剖分的裸题,支持三种操作:1.修改一条边的权值;2.将点u,v路径上的边都取相反数;3.查询u,v路径上边的最大值。 老方法,用边的后继点表示边。这样的做法需要注意在查询和修改时,当两点回到一条链上之后,需要操作的区间不再是id[u]到id[v],而是id[son[u]]到id[v]。
阅读全文
摘要:题意:有一棵树,每条边给定初始权值。一个人从s点出发。支持两种操作:修改一条边的权值;求从当前位置到点u的最短路径。 分析:就是在边可以修改的情况下求树上最短路。如果不带修改的话,用RMQ预处理LCA即可。 在静态版本的LCA问题上,用树状数组维护一条边在dfs序中表示的一段区间。为什么是一段区间,
阅读全文
摘要:树上路径区间更新,单点查询。 线段树和树状数组都可以用于本题的维护。 线段树: 树状数组:
阅读全文