[树形dp] [三维偏序] P12423 【MX-X12-T6】「ALFR Round 5」Coloring Nodes

posted on 2025-05-14 07:44:20 | under | source

题意:\(n\) 个点的树,一开始都是白色,点 \(i\) 花费 \(i\) 改成黑色。\(m\) 次询问 \(u,l,r\),求花费最小的染色方案,使得 \(u\) 到叶子 \(x\) 的路径上有黑点当且仅当 \(x\in [l,r]\)\(n,m\le 2\times 10^5\)

考虑 \(u\) 固定怎么做。首先将所有不在区间内的叶子到根的路径扣掉,那么得到若干棵森林。具体地,是若干完整的原树子树,满足子树内的叶子均为区间内的叶子。

显然这些子树是独立的,所以对每棵子树树形 dp 即可。也就是说预处理 \(f_{u}\) 表示 \(u\) 子树所有叶子都合法的最小代价,答案即为子树的根的 \(f\) 之和。

不好计算,考虑将点权转化为子树内边权和,也就是记 \(f^{\prime}_u=f_u-\sum\limits_{v\in son_u}f_v\),答案为森林所有点的 \(f^{\prime}\) 之和。

刻画点在森林上是容易的,预处理 \(mi_u,mx_u\) 为子树内最小最大的叶子,条件为 \(l\le mi_u,mx_u\le r\),那么就是个二维数点问题。

现在考虑 \(u\) 不固定。你发现一个 \(x\) 对不同 \(u\) 的贡献只有度数种,取决于在哪个子树内。贡献是易算的,换根 dp 即可。刻画在不同子树就多加一维 dfn 序,三维偏序即可。

\(O((n+m)\log^2 (n+m))\)

posted @ 2026-01-13 11:16  Zwi  阅读(0)  评论(0)    收藏  举报