LCA
LCA做法千千万,倍增树剖占一半。LCA,我认为比较好用的是树剖版与倍增版,一般情况写倍增版,如果正好这题用树剖就写树剖版。倍增版其实就是用倍增处理出一个点向上跳几步是哪个点,然后求LCA时就先将深的点跳到浅的点齐平,再一起往上跳,注意不要调到公共祖先,而要跳到他的儿子处。模板
LCA过程中可求链上最大/最小值,因为\(ST\)表也是用倍增。(例)。
这里介绍一下树上差分,它的求和时一个子树内合并到这个子树的根,所以越往下的相当于序列中越靠前的。
它可解决经典问题:一棵树上有若干条指定路径,求每条边有几条路径经过。
将边对应到点上,每条路径求出\(LCA\),再对两条路径(\(u->lca\),\(v->lca\)),进行树上差分。
树上差分的边差分是在\(LCA\)处减2w,点差分是在\(LCA\)和其父亲处分别-w。例
两个树合并后的直径一定是从两个树原本的直径中取端点。删边操作

浙公网安备 33010602011771号