动态规划优化

常见优化

  • 巧妙地设状态
  • 前缀和优化
  • 意识到有用的状态数很少
  • 意识到某些状态无法产生有效的贡献
  • 双管齐下,P3352
  • 拆差为差的和
  • 同时,差分也可以除去元素之间的大小关系,优化 DP

CDQ 分治

可以优化一类 \(f_i=\sum_{j<i,a_j<a_i,b_j<b_i}f_j\) 的 DP。

CDQ 套 CDQ

四边形不等式

可以优化一类 \(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\) 当做变量移到等式左边,成为一条直线,已知斜率,要求最小化截距,维护一个凸包,查询二分即可。

posted @ 2023-03-15 22:16  Network_Error  阅读(13)  评论(0)    收藏  举报