QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: GotoHiotori

Posted at: 2026-05-04 11:52:51

Last updated: 2026-05-04 12:05:44

Back to Problem

好想成为雨停小姐的狗啊

首先如果没有 c 限制且每个结点都被允许作为端点的话熟知有答案为每条边两边子树大小的 $\min$ 之和,原因是你分析每条边被经过次数的上限是这个,然后考虑构造是以重心为根分配一下。

那类似的思路放过来,设 $f(u,v)$ 表示这条边被经过的次数,那可以写出以下不等式:

$$ f(u,v)\leq\min\{c(u,v),[u\text{ is a leaf}]+\sum_{w\neq v}f(u,w),[v\text{ is a leaf}]+\sum_{w\neq v}f(v,w)\} $$

我们大胆猜测松弛一下得到的 $f$ 就是合法的。

但是写一下发现错了?为什么呢?因为忘了考虑奇偶性,你还需要对于结点 $u$ 确保 $[u\text{ is a leaf}]+\sum_v f(u,v)$ 是偶数,那你发现你每次调一个 $f$ 的奇偶性恰好修改两端,所以这个修改方案是唯一的,你先调一下,然后松弛过程中显然不会改变奇偶性。

接下来考虑如何快速做松弛,你发现你的符号是 $\leq$,所以你能做的事情是选择用哪一项来替换 $f$,如果你使用了例如

$$ [v\text{ is a leaf}]+\sum_{w\neq v}f(v,w) $$

的话,那你肯定不会让 $f(v,w)$ 展开时包含 $f(u,v)$,不然肯定是满足 $\leq$ 的,所以展开的方向也是唯一的,就是对于子树给出的值和 $c(u,v)$ 取 $\min$ 即可,于是你换根 dp 一下就好了。

说回为什么这个不等式组在正确的奇偶性下带来的判定是充要的:因为你发现这样你可以对每个结点把它周围的路径串起来,且不会走重边。

Comments

No comments yet.