树链剖分学习笔记
算法应用:
可以用来解决两个问题:
1.x到y点的最短路上的节点权值都+z
2.x到y点的最短路上的节点权值总和
算法本质:
1.把整颗树分为多条链,再进行解决
算法实现:
概念:
1.重儿子:所有儿子中子树节点数最多的节点
2.轻儿子:不是重儿子的儿子
3.重边:连接重儿子与父亲节点的边
4.轻边:连接轻儿子与父亲节点的边
5.重链:由重边组成的链
6.轻链:由轻边组成的链
实现:
1.DFS求出重儿子,父亲,深度
2.连接重链,标记DFS序
3.修改+LCA(用数据结构(线段树……)维护)