CF1175G
暴力 DP 显然,设 \(f_{i,k}\) 表示前 \(i\) 个数划分成 \(k\) 段的方案数,则
\[f_{i,k}=\min_{j=k-1}^{i-1} \left\{ f_{j,k-1}+(i-j)\min_{t=j+1}^i a_t \right\}
\]
直接做是 \(\mathcal O(kn^2)\) 的,考虑优化。
首先 \(\min_{t=j+1}^i a_t\) 是分段常数,可以用单调栈进行维护,记作 \(M\),那么
\[f_{i,k}=\min_{j=k-1}^{i-1} \left\{ f_{j,k-1}+(i-j)M \right\}=\min_{j=k-1}^{i-1} \left\{ \left( f_{j,k-1}-j \cdot M\right) +i \cdot M\right\}
\]
注意到有一个一次函数状物,可以用可持久化李超线段树和凸包上二分截距进行优化,后面的 \(i \cdot M\) 对于 \(i\) 来说可以当作常量最开始直接预处理到 \(f_{i,k}\) 从而不参与计算,这样可以做到 \(\mathcal O(kn \log n)\)。

浙公网安备 33010602011771号