1D1D动态规划
指状态数为O(n)O(n)O(n),每个状态的决策数为O(n)O(n)O(n),直接求解的复杂度为O(n2)O(n^2)O(n2)的动态规划方程dp[i]=min/max{
dp[j]+S[i,j]}dp[i] = min/max \{dp[j] + S[i, j]\}dp[i]=min/max{
dp[j]+S[i,j]}。
斜率优化
斜率优化是1D1D的一种常见优化方式,一般的套路是先写出dpdpdp方程,然后对于考虑iii之前的某个决策jjj和kkk,假设kkk决策优于jjj决策时,能对应得到一个不等式,满足这个不等式就表示kkk决策是优于jjj决策的,并且此时惊奇的发现可以把决策看做平面上的点,不等式也就转化成了斜率的比较。
此时iii之前的最优决策点一定是在上/下凸壳上。
具体实例
对于斜率式,设k>jk > jk>j且kkk和jjj都是i的前置状态, 满足yk−yjxk−xj<fi\frac{y_k-y_j}{x_k-x_j}<f_i