题意:给定一棵树,树上每个点有权值和类型。支持:修改某个点的类型;修改某个点的权值;询问某条链上某个类型的点的和/最大值。点数/类型数/询问数<=100000. 分析: 树链剖分,对每个类型的点建立线段树(动态开点)。 note: 忘记写t_query返回值调半天…… 莫名其妙地1A 代码: ...
分类:
其他好文 时间:
2018-03-01 23:42:25
阅读次数:
310
树链剖分整理总结 问题的设置: 对于一株树(无向无环连通图),为每个结点分配对应的权重。要求能高效计算任意两个结点之间的路径的各类信息,其中包括路径长度(路径上所有结点的权重加总),路径中最大权重,最小权重等等。到这里一切都还是比较简单的,我们可以利用Tarjan的LCA算法在线性时间复杂度内快速求 ...
分类:
其他好文 时间:
2018-03-01 00:49:12
阅读次数:
201
题目链接 "51nod 1462" 题目描述 给一颗以1为根的树。 每个点有两个权值:vi, ti,一开始全部是零。 Q次操作: 读入o, u, d o = 1 对u到根上所有点的vi += d o = 2 对u到根上所有点的ti += vi d 最后,输出每个点的ti值(n, Q include ...
分类:
其他好文 时间:
2018-02-27 12:46:40
阅读次数:
174
重儿子:子树包含节点最多的儿子就是重儿子,如图: 重链:连接重儿子的边 轻链:其它边 红色节点为重儿子,黑边为重链,蓝边为轻链 结论:可以证明从根节点到任意节点都不会经过$\log_2^n$条边 树剖:根据上一个结论,可以把树上问题转换为区间问题,每次处理一条链,最多处理$\log_2^n$条链 现 ...
分类:
其他好文 时间:
2018-02-26 23:16:05
阅读次数:
210
http://www.lydsy.com/JudgeOnline/problem.php?id=2325 吐槽一下部分分数据不满足性质 我打了6k的暴力.. 考虑一条链的情况 记录8个值 m[0/1][0/1]表示左边从哪里开始走 右边从哪里开始走(上面还是下面) 最多是多少 l[0/1] r[0/ ...
分类:
其他好文 时间:
2018-02-26 20:34:18
阅读次数:
154
题意:给出$n$个节点的树,每个节点有一种颜色,统计每棵子树的不同颜色的数目 直接对每个树$dfs$并回溯可以得出$O(n^2)$的算法,并不是十分OK 看了下Codeforces里的Tutorial,暂时感受了一种叫做 dsu on tree 的暴力黑科技 核心就是进行树链剖分,分出重儿子和轻儿子 ...
分类:
其他好文 时间:
2018-02-25 19:03:13
阅读次数:
167
题目大意: 给一颗树,每个节点有个初始值 现在支持以下两种操作: 1. C i x 表示将i节点的值改为x 2. Q i j x 表示询问i节点到j节点的路径上有多少个值为x的节点 思路: 首先可以想到树链剖分 虽然颜色的数量看起来很吓人 但是实际上只可能有n+q种颜色 所以我们的线段树只需要像主席 ...
分类:
其他好文 时间:
2018-02-25 13:01:09
阅读次数:
145
题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将 ...
分类:
其他好文 时间:
2018-02-22 21:23:40
阅读次数:
146
原题地址: "https://www.luogu.org/problemnew/show/P3384" 题目简述 已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 1. 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 2. 格式: 2 x ...
分类:
其他好文 时间:
2018-02-22 00:40:48
阅读次数:
171