题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式: 2 x y 表示求树从x到y结点最短路径上所有节点的值之和 操作3: 格式: 3 x z 表示将 ...
分类:
其他好文 时间:
2018-07-31 13:31:51
阅读次数:
150
然而并不熟练剖分(雾); 他可以做什么?(大雾) 熟练想必是在熟上的练(雾雾雾) #define 树链 熟练 树链剖分即把树剖成很多条链,有的长有的短; 主流剖法: 1.随机:O(1 ~ 脸 ~n)均摊后 log ; 2.轻重链:O为 log 级 也即这里的熟练剖分; 非主流剖法: 机房某大佬自创的 ...
分类:
其他好文 时间:
2018-07-30 01:10:00
阅读次数:
199
复杂度nlog2n 边权可以转化成点权 搞一个根 把边权给到边两端深度大的哪个点 这样处理要删一个点 要删的是lca(x,y) 第一步 处理出fa deep size son 第二步 连接重链 处理出top dfn rk 注意先处理重链再处理轻链 保证了重链的dfn值连续 求lca步骤: 如果两个是 ...
分类:
其他好文 时间:
2018-07-29 21:10:36
阅读次数:
128
树链剖分: 树上操作并不能实现一段链的直接更新。 树链剖分就解决了这个问题。 本质上是树形到线性的转化。 通过子树,重链是一个连续的dfn区间的优秀性质,可以在dfn序列上进行操作,达到在树上操作的目的。 通常和线段树结合。 板子:以前写的。 树链剖分 例题: 1.遥远的国度 题目大意: 给定一棵有 ...
分类:
其他好文 时间:
2018-07-27 21:09:17
阅读次数:
168
这几天学了一个树链剖分,觉得还不是很难,这里我试着讲一讲吧。 首先,我认为树链剖分是把在树上一个节点一个节点的走改为按照某种规则跳,从而降低了时间复杂度。 那这是什么规则呢? 首先我们得知道什么是重链,知道什么是重链就得先知道什么是重儿子,重儿子就是子树较大的儿子。然后对于一个点,我们总是往他的重儿 ...
分类:
其他好文 时间:
2018-07-27 21:00:07
阅读次数:
196
简单的树链剖分,自己随便弄个样例就能过。 给你一个树,支持两个操作: 1. 从u点到v点的路径上的点的权值都添加上d。 2. 查询以u点为根的子树的权值和。 唯一可能错的就是1操作了。 u到v的路径,显然需要找出他们的lca。 那么就分为两部分:u到lca和lca到v。 但是发现:走这么一段路,df ...
分类:
其他好文 时间:
2018-07-27 19:29:12
阅读次数:
146
【模板·II】树链剖分 学长给我讲树链剖分,然而我并没有听懂,还是自学有用……另外感谢一篇Blog +by 自为风月马前卒+ 一、算法简述 树链剖分可以将一棵普通的多叉树转为线段树计算,不但可以实现对一棵子树的操作,还可以实现对两点之间路径的操作,或是求 LCA(看起来很高级)。 其实树链剖分不算什 ...
分类:
其他好文 时间:
2018-07-26 22:06:08
阅读次数:
169
参考博客:https://www.cnblogs.com/George1994/p/7821357.html 模板题:HDU 3966 Aragorn's Story 给一棵树每个点有权值,三种操作,一是给两个点和一个值U, V,K,U~V这条路径上所有点+K,二是U~K这条路径上所有点权值-K,三 ...
分类:
其他好文 时间:
2018-07-24 20:25:05
阅读次数:
239
* 树链剖分模板题 * 由于存在换根操作 * 对所有关于节点 u 的修改和查询操作进行分类讨论 * 若 Root 在 u 的子树中,则不处理 u 所在的 Root 的那颗子树 * 否则不会有影响 * 寻找 Root 所在的那颗子树的根可以用倍增求 ...
分类:
其他好文 时间:
2018-07-24 17:51:46
阅读次数:
172
题目分析: 不难发现可以用动态DP做。 题目相当于是要我求一条路径,所有与路径有交的链的代价加入进去,要求代价最大。 我们把链的代价分成两个部分:一部分将代价加入$LCA$之中,用$g$数组保存;另一部分将代价加在整条链上,用$d$数组保存。 这时候我们可以发现,一条从$u$到$v$的路径的代价相当 ...
分类:
其他好文 时间:
2018-07-21 19:16:53
阅读次数:
204