将树分割成若干条链,以维护树上的信息,若无特殊需求,一般是重链剖分。
两个dfs
第一个dfs是预处理各个结点的基本信息,第二个dfs是利用信息进行剖分(dfs序)
因为dfs序连续的值是一条链,所以,我们需要让树在进行dfs时,优先对重儿子进行dfs,之后再对其它轻儿子进行dfs
将剖分的重链放在线段数组或者树状数组上,然后在这个数据结构上进行维护。
用数据结构对节点信息进行维护,进行区间查询,区间更新。
由dfs序可知,某节点的入序和出序之间的连续数就是该节点的子树。
操作步骤:
主体还是寻找LCA,就是如果跳到父链(或是其它点),把x到它首结点(其它点)之间结点信息进行更新。