题意:给一棵带边权的树,可以花费 111 的代价把一条边的边权修改 111,一条边可以修改多次,求使得根到叶子距离相等的最小代价。
n≤3×105n\leq 3\times 10^5n≤3×105
先暴力 dp
设 f(u,k)f(u,k)f(u,k) 表示 uuu 到子树内所有叶子距离为 kkk 的最小代价。因为仍然有多种,所以最小是有意义的。
加入一个儿子 vvv 后,设这条边长度为 xxx:
f(u,k)⟵f(u,k)+min{ ∣i−x∣+f(v,k−i)}f(u,k)\longleftarrow f(u,k)+\min\{|i-x|+f(v,k-i)\} f(u,k)⟵f(u,k)+min{ ∣i−x∣+f(v,k−i)}
发现这东西就是 ∣x−i∣|x-i|∣x−i∣ 和

本文介绍了一种解决给定带边权树问题的方法,通过动态规划和凸包理论,以最小代价调整边权,使得从根节点到所有叶子节点的距离相等。利用可并堆数据结构,有效地维护凸包,最终得出答案。算法复杂度为O(n log n)。
1077

被折叠的 条评论
为什么被折叠?



