AC6 Round C sol
假定树以
I 两端点 LCA 是 u 的路径
长链剖分优化 DP,每一次暴力合并短链的时候到长链里面统计一下答案。
用树状数组维护长链,复杂度为
II 两端点 LCA 不是 u 的路径
将答案记为
相差的有两部分:
- 过一个孩子,并且 LCA 是
u 的路径。如果一端是u ,则需要减 1 次;否则需要减 2 次。 - 从
u 开始向上走的路径,需要加上。
将 2 看作是所有从
将 1 和 2 加起来,
所有从
好像有个两次点分然后不用做 dp 的方法,比 std 一次点分慢一些但是好写很多,详情请咨询 墨染空 神仙(雾)。