CF1119F

先暴力贪心。

fu,0/1f_{u,0/1} 分别表示是否删除 uu 和父亲之间的边,子树内的最小代价。

我们要满足的就是 uu 被删除的边数 kk 满足 duukxdu_u-k \le x

这下每个 vv,不是选 w+fv,1w+f_{v,1} 就要选 fv,0f_{v,0},也就是二选一,且尽量删边。

对于所有儿子 vv,如果 fv,1+wu,vfv,0f_{v,1}+w_{u,v}\leq f_{v,0},那么我们选它是不劣的。

如果我们选了这些后,度数还是无法满足条件。

将未选边按照 fv,1+wu,vfv,0f_{v,1}+w_{u,v}-f_{v,0} 排序,从最小开始选就行了。

简化一点,选择前 duuxdu_u-x 小的 fv,0+wu,vf_{v,0}+w_{u,v},其他选择 min(fv,0+wu,v,fv,1)\min(f_{v,0}+w_{u,v},f_{v,1})

fu,1f_{u,1} 同理。

发现当 duuxdu_u \leq x 时,就是选择了子树内的最优方案,且无需满足度数限制,且 fu,0f_{u,0}fu,1f_{u,1} 对父亲的影响只有 wu,vw_{u,v}

这启发我们,如果我们的可以做到每次只 dp 有用的点,那么复杂度是 O(xi[dui>x])=O(dui)=O(n)\mathcal O(\sum_x \sum_i [du_i>x])=\mathcal O(\sum du_i)=\mathcal O(n)

删掉无用点后,将我们要用到的边权记到有用的点上。

为什么,无用点和无用点之间的边是肯定满足的,那么无用点只会对有用点产生贡献,所以每次相当于将无用点看成联通块无用的叶子。

考虑有用点和无用点之间的决策,能产生影响的就只有 wu,vw_{u,v}

posted @ 2023-11-05 11:54  蒟蒻orz  阅读(0)  评论(0编辑  收藏  举报  来源