题目: 题目背景 ZJOI2008 DAY1 T4 题目描述 一棵树上有 n 个节点,编号分别为 1 到 n ,每个节点都有一个权值 w .我们将以下面的形式来要求你对这棵树完成一些操作:I.CHANGE u t :把结点 u 的权值改为 t :II.QMAX u v :询问从点 u 到点 v 的路径上的节点的最大权值:III.QSUM u v :询问从点 u 到点 v 的路径上的节点的权值和. 注意:从点 u 到点 v 的路径上的节点包括 u 和 v 本身. 输入格式 输入第一行为一个整数 n…
BZOJ 2243 染色 | 树链剖分模板题进阶版 这道题呢~就是个带区间修改的树链剖分~ 如何区间修改?跟树链剖分的区间询问一个道理,再加上线段树的区间修改就好了. 这道题要注意的是,无论是线段树上还是原树上,把两个区间的信息合并的时候,要注意中间相邻两个颜色是否相同. 这代码好长啊啊啊啊 幸好一次过了不然我估计永远也De不出来 #include <cstdio> #include <cstring> #include <algorithm> using namesp…
Hdu 5274 Dylans loves tree (树链剖分模板) 题目传送门 #include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <vector> #define ll long…
[ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 I II. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 Input 输入的第一行为一个整数n,表示节点的个数.接下来n – 1行,每行…
题意:给出树上任意两点,求路径上的值的和与最大值,带单点修改操作 树链剖分思路: 1.对树进行dfs求出点的深度和父亲节点,然后求出轻重儿子(重儿子就是点最多的那个子树,其余都是轻儿子),用一个son数组指向每个节点的重儿子 2.对树进行第二次dfs,对于所有的重儿子,求出他的top节点也就是每个重儿子沿着重链可以到达的最远的那个祖先,然后维护dfs序,记录每个节点的访问次序以及第几次访问的是哪个节点,轻儿子的top节点就是本身 然后我们得到 dfs序:       1 4 9 13 14 8…
原题链接 树链剖分的模板题:在点带权树树上维护路径和,最大值和单点修改 这里给出几个定义 以任意点为根,然后记 size (u ) 为以 u 为根的子树的结点个数,令 v 为 u 所有儿子中 size 值最大的一个儿子,则 ( u , v ) 为重边, v 称为 u 的重儿子. u 到其余儿子的边为轻边. 根据定义:任何一个点属于且仅属于一条重链(这里一个点也算是重链) 我们称某条路径为重路径(链),当且仅当它全部由重边组成且端点两边没有重边了. 所以我们可以把这个棵树分成若干个重链,经过证明重…
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1036 题目大意: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 思路: 树链剖…
题目传送门 树链剖分,计算机术语,指一种对树进行划分的算法,它先通过轻重边剖分将树分为多条链,保证每个点属于且只属于一条链,然后再通过数据结构(树状数组.SBT.SPLAY.线段树等)来维护每一条链. 以下是几种概念: 常见的路径剖分的方法是轻重树链剖分(启发式剖分) 将树中的边分为:轻边和重边 ž定义size(X)为以X为根的子树的节点个数. ž令V为U的儿子节点中size值最大的节点,那么边(U,V)被称为重边,树中重边之外的边被称为轻边. 性质:ž轻边(U,V),size(V)<=size…
Grass Planting 题意 给出一棵树,树有边权.每次给出节点 (u, v) ,有两种操作:1. 把 u 到 v 路径上所有边的权值加 1.2. 查询 u 到 v 的权值之和. 分析 如果这些值不是在树上,而是在区间上,那么凭借线段树.树状数组可以很轻松的解决,但是在树上则不能直接操作. 树链剖分就是将树上的节点映射到区间上,从而实现区间操作. 学习树链剖分前需要掌握的知识点:线段树.LCA. 参考blog 认真读完这篇 blog ,跟着算法流程走一遍差不多就懂了. code #incl…
题目链接 引用到的大佬博客 代码来自:http://blog.csdn.net/jinglinxiao/article/details/72940746 具体算法讲解来自:http://blog.sina.com.cn/s/blog_7a1746820100wp67.html 参考博客: http://www.cnblogs.com/barrier/p/6067964.html http://www.cnblogs.com/sagitta/p/5660749.html “在一棵树上进行路径的修改…