动态规划优化
常见优化
- 巧妙地设状态
- 前缀和优化
- 意识到有用的状态数很少
- 意识到某些状态无法产生有效的贡献
- 双管齐下,P3352
- 拆差为差的和
- 同时,差分也可以除去元素之间的大小关系,优化 DP
CDQ 分治
可以优化一类 \(f_i=\sum_{j<i,a_j<a_i,b_j<b_i}f_j\) 的 DP。
四边形不等式
可以优化一类 \(f_i=\max_{j<i}(f_j+w(j,i))\),\(w\) 满足四边形不等式的 DP。
或者另一类 DP,\(f_{i,j}=w(i,j)+\min_{k=i}^{j-1}\{f_{i,k}+f_{k+1,j}\}\),满足:
- \(f_{i,i}=w(i,i)\);
- \(w\) 满足四边形不等式,且 \(w(i,j)\ge w(k,l)\ \ \ (i\le k\le l\le j)\)。
或者另一类 DP,\(f_{i,j}=\min_{k\le j} f_{i-1,k}+w(k,j)\),且 \(w\) 满足四边形不等式。
定义
若对于任意 \(a\le b\le c\le d\),有 \(w(a,d)+w(b,c)\ge w(a,c)+w(b,d)\),称 \(w\) 满足四边形不等式(交叉小于包含)。
一个等价定义,对于任意 \(a<b\),取 \(a<a+1\le b<b+1\),有 \(w(a,b+1)+w(a+1,b)\ge w(a,b)+w(a+1,b+1)\)。
这可以通过每次令 \(a=a+1\) 归纳证明。
性质 1
对于一类 DP,\(f_i=\min_{j<i}(f_j+w(j,i))\),\(w\) 满足四边形不等式。
若 \(j\) 对于 \(i\) 的转移要优于所有 \(<j\) 的 \(j'\) 的转移,则对于 \(i'>i\),同样满足 \(j\) 对于 \(i'\) 的转移要优于所有 \(<j\) 的 \(j'\) 的转移。
那么令 \(p_i\) 为 \(i\) 的最优转移的 \(j\),则 \(p\) 单调不降。
性质 2
对于另一类 DP,\(f_{i,j}=w(i,j)+\min_{k=i}^{j-1}\{f_{i,k}+f_{k+1,j}\}\),满足:
- \(f_{i,i}=w(i,i)\);
- \(w\) 满足四边形不等式,且 \(w(i,j)\ge w(k,l)\ \ \ (i\le k\le l\le j)\)(区间包含单调性)。
此时有性质:
- \(f\) 满足四边形不等式,且 \(f\) 区间包含单调性。
四边形不等式可以通过归纳分讨最优转移点证明,或者不断令 \(i=i+1\)。
根据这个性质,设 \(p_{l,r}\) 为 \(f_{l,r}\) 的最优转移点,有 \(p_{l,r-1}\le p_{l,r}\le p_{l+1,r}\)。
这可以通过 \(f\) 满足四边形不等式,对两个 \(\le\) 分别证明。
此时若直接枚举 \(p_{l,r-1}\sim p_{l+1,r}\) 转移,时间复杂度是 \(n^2\) 的!原因在于所有的 \(p_{l+1,r}-p_{l,r-1}+1\) 的和 \(=n^2\)。
性质 3
对于另一类 DP,\(f_{i,j}=\min_{k\le j} f_{i-1,k}+w(k,j)\),且 \(w\) 满足四边形不等式。
此时有 \(f\) 满足四边形不等式。
设 \(p_{l,r}\) 为 \(f_{l,r}\) 的最优转移点,有 \(p_{l-1,r}\le p_{l,r}\le p_{l,r+1}\)。
同性质 2。
WQS 二分
二分斜率,全局求解。
可以套 DP,贪心,斜优,四边形。
单调队列
如题。
DP 套 DP
例题 [SDOI2022] 小 N 的独立集。
长剖
斜率优化
优化一类 DP,\(f_{i}=\min_{j<i}f_j+w(i)w'(j)+w''(j)+w'''(i)\)。
移项,\(f_j+w''(j)=-w'(i)w(j)-w''(i)+f_i\)。
发现这是一个直线方程。
问题转化为 \(i-1\) 个点,用斜率为 \(-w'(i)\) 的直线自底向上穿过,求碰到的第一个点。只需要维护下凸包即可。
做题套路:整理 DP 表达式,把和 \(i\) 相关的当做常量,\(j\) 当做变量移到等式左边,成为一条直线,已知斜率,要求最小化截距,维护一个凸包,查询二分即可。

浙公网安备 33010602011771号