树链剖分学习笔记

算法应用:

可以用来解决两个问题:

1.x到y点的最短路上的节点权值都+z

2.x到y点的最短路上的节点权值总和

算法本质:

1.把整颗树分为多条,再进行解决

算法实现:

概念:

1.重儿子:所有儿子中子树节点数最多的节点

2.轻儿子不是重儿子的儿子

3.重边:连接重儿子与父亲节点的边

4.轻边:连接轻儿子与父亲节点的边

5.重链:由重边组成的链

6.轻链:由轻边组成的链

实现:

1.DFS求出重儿子父亲深度

2.连接重链,标记DFS序

3.修改+LCA(用数据结构(线段树……)维护)

 

posted @ 2019-07-07 20:24  CodeHelper  阅读(141)  评论(0编辑  收藏  举报