跳转至

斜率优化

例题引入

「HNOI2008」玩具装箱

\(n\) 个玩具,第 \(i\) 个玩具价值为 \(c_i\)。要求将这 \(n\) 个玩具排成一排,分成若干段。对于一段 \([l,r]\),它的代价为 \((r-l+\sum_{i=l}^r c_i-L)^2\)。其中 \(L\) 是一个常量,求分段的最小代价。

\(1\le n\le 5\times 10^4, 1\le L, c_i\le 10^7\)

朴素的 DP 做法

\(f_i\) 表示前 \(i\) 个物品,分若干段的最小代价。

状态转移方程:$f_i=\min_{j