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\) 即可。

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

浙公网安备 33010602011771号