、

P3642-APIO2016-烟花表演

题意

有根树,边有边权。一个代价将一条边权 \(\pm 1\),求最小代价使得叶子到根距离相同。

思路

朴素 dp 有:

\[f_i(x)=\sum_{v}\min_{k\le x} \{ f_{v}(k)+\left| l-x+k \right| \} \]

这种绝对值,\(\min\) 可以猜测具有凸性,并且感性理解确实发现如果说一段位置是最小,那么偏离它们都会导致答案增加。

考虑 \(f_i(x)\) 与它的父亲 \(\mathrm{fa}_i\) 有连边,长度为 \(l\)。那么对父亲的贡献

\[F(x)=\min_{k\le x} \{ f(k)+|l-x+k| \} \]

考虑拆解这个绝对值。设 \([L,R]\) 斜率为 \(0\) 取到 \(f\) 的最小值。那么在 \(x<L\) 的时候,由于斜率有很多,于是我们不如直接将 \(l\) 调整到 \(0\),则答案是 \(f(x)+l\)。然后如果是 \(L\le x<L+l\),则我们考虑 \(l\) 改的越少越好,答案是 \(f(L)+x-l+L\)。当 \(L+l\le x\le R+l\) 时我们不需要改答案就是 \(f(L)\)。否则答案是 \(f(R)+x-R-l\) 即可。

如果挂掉了就是一个这个函数更新的展示

然后发现就是删除右半边之后平移一段平台可并堆即可。

posted @ 2026-09-24 14:42  tanghg  阅读(5)  评论(0)    收藏  举报