CF1062E Company

发布时间 2023-07-20 17:28:45作者: Ender_32k

对于一个询问 \([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)\)

评测记录(Happy New Year!)。