非常好的一个博客 http://www.cnblogs.com/chinhhh/p/7965433.html
权值在边,将权值映射在边的儿子节点就ok了
以下题目来自 kuangbin 这些题目套上树链剖分的模板,感觉考的就是线段树的知识
P3384 【模板】树链剖分 (点)
题意:
1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z
2 x y 表示求树从x到y结点最短路径上所有节点的值之和
3 x z 表示将以x为根节点的子树内所有节点值都加上z
4 x 表示求以x为根节点的子树内所有节点值之和
思路:树链剖分+线段树
HDU 3966 Aragorn's Story(点)
题意:
1: 树上u,v二点路径所有节点+-v 2:单点更新
思路:树链剖分+线段树
POJ 2763 Housewife Wind(边)
题意:1:树上u v二点路径所有边权之和 2:单边更新
思路:讲边的权值存在儿子节点就ok了,树链剖分+树状数组维护前缀和
POJ 3237 Tree(边)
题意:1:单边更新 2:u v二点路径所有边权变成相反数 3:求u,v路径上最大的边权值
思路:树链剖分+线段树 取相反树,线段树加个add记录是否变成相反数就行了
HYSBZ 2243 染色 (点)
题意:1:将节点a到节点b路径上所有点都染成颜色c;2:询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段)
思路:树链剖分+线段树 线段树维护ls表示区间最左边的颜色,rs同理,sum表示区间颜色数目,在pushup的时候判断左儿子的rs和右儿子了ls,判断区间答案是否要减一,还有在重链上查询时判断top[x]和f[top[x]的颜色是否一样,画个图就好理解了