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

posted @ 2026-07-06 10:24  constexpr_int  阅读(19)  评论(0)    收藏  举报