对于一个询问 \([l,r]\),假设 \(\text{lca}(l,l+1,...,r)=u\)。
如果删去了点 \(x\),使得 \(\text{lca}\) 从 \(u\) 下移到了点 \(v\),说明 \(x\) 一定在 \(u\) 的子树内并且不在 \(v\) 的子树内。
这样顺序好像不太对,这样说吧:
如果你想让答案从 \(u\) 变成 \(v\),那么你需要尽可能选一个不在 \(v\) 子树内的点。
不难发现,取一个 \([l,r]\) 中 dfs
序的最小,或者取个最大,答案就这两种情况,不可能更优了。
因为如果能到 \(v\) 的话,如果 \(v\) 的 dfs
序在中间,那你取最小和最大都行;如果 \(v\) 的 dfs
序在两边,那总有一边是不在 \(v\) 的子树里的。
于是取 \([l,r]\) 中 dfs
序最小/最大然后取深度 \(\max\) 即可。
复杂度 \(O(n\log^2 n)\)。
标签:子树内,text,Company,dfs,CF1062E,lca From: https://www.cnblogs.com/Ender32k/p/17568997.html