zl程序教程

您现在的位置是:首页 >  其他

当前栏目

CF1646D Weight the Tree

2023-04-18 15:36:24 时间

个人思路:
首先,除了 (n=2) 的情况,我们发现,一条边连接的两个点 (u,v),必然有一个度 (>1)

(u = 1,v > 1) 时,(u) 是好的,那么 (w_u = w_v),因为权值都是正数,(w_v < w_u + dots)(v) 一定不是好的。
(u = 1,v > 1) 时,(v) 是好的,那么 (w_v = w_u + dots)(w_u < w_v)(u) 一定不是好的。
(u > 1,v > 1) 时,(u) 是好的,那么 (w_u = w_v + dots)(w_v < w_u)(v) 一定不是好的。

因此得出结论:除了 (n=2) 的情况,所有好点一定没有边相连。
所有好点没有边相连时,我们令所有非好点 (w=1),好点 (w) 为它的度数,一定可行,同时一定最小。
于是 dp 求最大独立集,额外维护一下 (mx_{u,0/1}) 表示 (u)(/)不选为好点时,(u) 子树内(包括 (u))的好点数最多时 (w) 之和的最小值,以及转移的路径(最后递归下去求每个点是否为好点)。