树链剖分
顾名思义,就是把一课时分成若干条链,使得它可以用数据结构(例如线段树)来维护
一些定义:
重儿子:子树最大的儿子
轻儿子:除了重儿子以外的儿子
重边:父节点与重儿子组成的边
轻边:除重边以外的边
重链:重边连接而成的链
轻链:轻边连接而成的链
链头:一条链上深度最小的点
第一步:进行进行轻重边的划分。
定义size[x]为以x为根的子树节点个数,令v为u儿子中size值对打的节点,那么(u,v)就是重边,其它出边都是轻边
两个重要性质:
1.轻边(u,v)中,Size[v]<size[u]/2 显然,如果儿子v的size>=size[u],则它应该是重边,u的子树中没有size比他更大的
(作者考试爆零去了,一会再写)