1D1D动态规划
指状态数为 O ( n ) O(n) O(n),每个状态的决策数为 O ( n ) O(n) O(n),直接求解的复杂度为 O ( n 2 ) O(n^2) O(n2)的动态规划方程 d p [ i ] = m i n / m a x { d p [ j ] + S [ i , j ] } dp[i] = min/max \{dp[j] + S[i, j]\} dp[i]=min/max{dp[j]+S[i,j]}。
斜率优化
斜率优化是1D1D的一种常见优化方式,一般的套路是先写出 d p dp dp方程,然后对于考虑 i i i之前的某个决策 j j j和 k k k,假设 k k k决策优于 j j j决策时,能对应得到一个不等式,满足这个不等式就表示 k k k决策是优于 j j j决策的,并且此时惊奇的发现可以把决策看做平面上的点,不等式也就转化成了斜率的比较。
此时 i i i之前的最优决策点一定是在上/下凸壳上。
具体实例
对于斜率式,设 k > j k > j k>j且 k k k和 j j j都是i的前置状态, 满足 y k − y j x k − x j < f i \frac{y_k-y_j}{x_k-x_j}<f_i xk−xjyk−yj<fi,则说明 k k k决策优于 j j j决策。
把决策点看做 ( x i , y i ) (xi, yi) (xi,yi)的平面点,那么最优答案一定是在下凸壳上。
对于树上的问题,可以点分治处理,每次用重心到根的部分去更新重心的子树, 见NOI购票。
四边形不等式优化
对于状态转移方程:
d p [ i , j ] = m i n ( d p [ i ] [ k − 1 ] + d p [ k ] [ j ] ) + w [ i , j ] ; ( i < = k < = j ) , m i n dp[i,j] = min(dp[i][k-1] + dp[k][j]) + w[i,j];(i<=k<=j), min dp[i,j]=min(dp[i][k−1]+dp[k][j])+w[i,j];(i<=k<=j),min才满足要求。
四边形不等式决策单调性
当函数 w [ i , j ] w[i,j] w[i,j]满足 w [ a , c ] + w [ b , d ] ≤ w [ b , c ] + w [ a , d ] w[a,c] + w[b,d] \leq w[b,c] + w[a,d] w[a,c]+w[b,d]≤w[b,c]+w[a,d] 且 a < b < c < d a < b < c < d a<b<c<d 时,我们称 w [ i , j ] w[i,j] w[i,j]满足四边形不等式单调
当函数 w [ i , j ] w[i,j] w[i,j]满足 w [ i , j ] ≤ w [ i ′ , j ′ ] , i ′ ≤ i < j ≤ j ′ w[i,j] \leq w[i',j'], i' \leq i < j \leq j' w[i,j]≤w[i′,j′],i′≤i<j≤j′ 时,称 w w w关于关于区间包含关系单调。
于是有以下三个定理
定理一:如果w同时满足四边形不等式和决策单调性 ,则dp也满足四边形不等式
定理二:当定理一的条件满足时,让 d p [ i , j ] dp[i,j] dp[i,j]取最小值的 k k k为 K [ i , j ] K[i,j] K[i,j],则 K [ i , j − 1 ] ≤ K [ i , j ] ≤ K [ i + 1 , j ] K[i,j-1]\leq K[i,j] \leq K[i+1,j] K[i,j−1]≤K[i,j]≤K[i+1,j]
定理三: w w w为凸当且仅当 w [ i , j ] + w [ i + 1 , j + 1 ] ≤ w [ i + 1 , j ] + w [ i , j + 1 ] w[i,j]+w[i+1,j+1]\leq w[i+1,j]+w[i,j+1] w[i,j]+w[i+1,j+1]≤w[i+1,j]+w[i,j+1]
由定理三知, 判断 w w w是否为凸即判断 w [ i , j + 1 ] − w [ i , j ] w[i,j+1]-w[i,j] w[i,j+1]−w[i,j] 的值随着i的增加是否递减
于是求 K K K值的时候 K [ i , j ] K[i,j] K[i,j]只和 K [ i + 1 , j ] K[i+1,j] K[i+1,j] 和 K [ i , j − 1 ] K[i,j-1] K[i,j−1]有关。
对于这方面的资料国内相对比较少,大多数的人只知道凸四边形不等式优化,凹四边形不等式优化更加麻烦一些…有兴趣的同学可以google一下台湾的相关资料。
Problem List
贞鱼
玩具装箱toy
货币兑换cash
柠檬
诗人小G
balls
Lightning Conductor
序列分割