题目大意: 给定一棵n个节点的树,初始时该树的根为1号节点,每个节点有一个给定的权值。下面依次进行m个操作,操作分为如下五种类型: 换根:将一个指定的节点设置为树的新根 修改路径权值:给定两个节点,将这两个节点间路径上的所有节点权值(含这两个节点)增加一个给定的值 修改子树权值:给定一个节点,将以该 ...
分类:
其他好文 时间:
2018-10-20 18:38:51
阅读次数:
192
Description 江湖由 N 个门派(2≤N≤100,000,编号从 1 到 N)组成,这些门派之间有 N-1 条小道将他们连接起来,每条道路都以“尺”为单位去计量,武林盟主发现任何两个门派都能够直接或者间接通过小道连接。 虽然整个江湖是可以互相到达的,但是他担心有心怀不轨之徒破坏这个武林的安 ...
分类:
其他好文 时间:
2018-10-19 20:48:56
阅读次数:
196
Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 Input 第一行包 ...
分类:
其他好文 时间:
2018-10-18 10:51:06
阅读次数:
144
两次dfs,第一次处理处fa[],depth[],size[],son[],第二次处理出top[],rank[],id[] 一条重链的编号是连续的,可以用数据结构维护,做事情的时候判断是否在同一条链上,不是就把最深的跳到链头的fa[],然后继续判断 luogu3384 【模板】树链剖分 区间加,求和 ...
分类:
其他好文 时间:
2018-10-18 10:48:45
阅读次数:
139
前言 LCA的求法有多重多样,总结下来是下面这4种.希望大家可以加油! 暴力求LCA 我们考虑dfs求出每一个点的父亲(在当前根下),然后直接先暴力跳到同一个深度,再同时跳 树链剖分求LCA 考虑把一个树分成轻链与重链,然后直接跳链就好了. Tarjan求LCA 考虑把每一个询问当做一条边处理,那么 ...
分类:
其他好文 时间:
2018-10-16 19:56:28
阅读次数:
453
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ30.html 题目传送门 - UOJ#30 题意 uoj写的很简洁、清晰,这里就不抄一遍了。 题解 首先建出圆方树。接下来,我们称"圆点"为原来有的点,"方点"为新增的点。 然后先只考虑在线询问如何做。 — ...
分类:
其他好文 时间:
2018-10-16 17:42:30
阅读次数:
159
注意 求子树时,要用子树dfs序连续这个特性,但是 不能用 如下方法(sub表示x的子树中最大的dfs序): 因为这样会无法处理叶子节点(直接返回了) 最好的办法是用size,直接算出来 细节比较多,都在注释里 变量名重复真的很可怕。。。调了半天都没发现 ...
分类:
其他好文 时间:
2018-10-14 16:29:50
阅读次数:
186
题面 "传送门" 思路 本来以为这道题可以LCT维护子树信息直接做的,后来发现这样会因为splay形态改变影响子树权值平方和,是splay本身的局限性导致的 所以只能另辟蹊径 首先,我们考虑询问点都在1的情况 考虑一次修改带来的影响: 假设当前节点的值变动量为$delta$,修改节点为$u$ 那么对 ...
分类:
其他好文 时间:
2018-10-12 21:12:20
阅读次数:
174
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4551 [算法] 树链剖分 时间复杂度 : O(QlogN) [代码] ...
分类:
其他好文 时间:
2018-10-11 23:49:09
阅读次数:
241
使用方法: sz(size)储存子树大小 dp(deep)储存节点深度 fa(father)储存节点父亲 hs(heavy son)储存节点重儿子 hf储存当前节点所在链的顶端节点 id储存节点编号 nd(node)储存当前编号对应的节点 储存方法:链式前向星 ...
分类:
其他好文 时间:
2018-10-10 17:52:35
阅读次数:
218