thupc 2025

离线 + 轻重儿子 + 线段树 + 树状数组的 \(O(n \log^2 n)\) 的做法。


考虑一个询问 \((l,r,x)\),一个点 \(y\) 作为 lca 合法,等价于 \(y\)\(x\) 的祖先,并且扣掉 \(x\) 方向的子树后,存在一个 \(i \in [l,r]\),使得 \(a_i\)\(y\) 子树内。

分块。预处理块对单点的贡献可以 dfs\(x\) 能贡献 \(y\) 子树等价于扣掉 \(y\) 子树 \(x\) 子树内仍有点的某个位置位于块内。可以做到 \(O(q\sqrt m)\)

由分块启发,考虑 dfs 的过程直接维护答案。

定义点亮点 \(x\),权值为 \(v\) 的含义为将 \(x\)\(a\) 序列中的所有位置在线段树上的权值设为 \(v\)。线段树维护区间最大值。

类似定义熄灭。

对于一个点 \(x\),点亮 \(x\) 并暴力点亮所有轻儿子,权值为 \(x\);然后递归重儿子;接着递归轻儿子之前先暴力熄灭,递归完再点亮回来。重儿子贡献轻儿子就差分 + 树状数组。

\(n,q,m\) 同阶,时间复杂度 \(O(n\log^2 n)\)

洛谷机子太慢了无法通过,但是 qoj 过了。

posted @ 2025-12-22 21:58  rabbit_mygo  阅读(1)  评论(0)    收藏  举报