动态规划
简单聊一聊 \(A\ DP\)
区间 DP
简介
枚举区间长度,然后枚举左端点。
对于转移,可以枚举中间点 \(k\),由 \([l,k]\) 和 \([k+1,r]\) 转移,或者由 \([l,r-1]\) 和 \([l+1,r]\) 转移。
例题
P 4342 Polygon
对于此题,只有乘和加,考虑如何得到最大值。
- \(max\),\(max\)
- \(min\),\(min\)
如果两个最小值为负数,那么乘完之后就有可能会很大,\(max\)、\(min\) 可以考虑,但发现一定不是最优。
因为用到了最小值,提醒我们也需要一起处理出来最小值。
- \(min\),\(min\)
- \(max\),\(min\)
如果想偷懒,可以所有情况都考虑一遍。
树形 DP
简介
普通的树形 DP,基于 \(dfs\),由子节点向父节点合并,或 填表法
例题
P 3574 FAR-Farm Craft
经典树形 DP
斜率优化
解法
\(f_i=\min/\max\{f_j+val(i,j)\}\)
转换为 \(y_j=k_i*X_j+B_i\) 的形式,其中 \(B_i\) 包含求的 \(f_i\)
观察 \(k_i\) 的形式,具有单调性则可能用单调队列维护,其他形式可能为平衡树,CDQ等
\(b_i\) 取最小值在下凸壳,最大值在上凸壳
例题
CF311B Cats Transport
四边形不等式

一维 DP
\(f_i=\min/\max \{f_k+w(k,i) \}\)
定理(决策单调性)
如果 \(w\) 满足四边形不等式,则 \(f\) 满足决策单调性
决策单调性指对于 \(j \le i\),如果 \(i\) 的最优决策为 \(p\),那么 \(j\) 的最优决策 \(p' \ge p\)
例题
二维 DP
例题
\(DAG\) 上 DP
填表法与刷表法
在 \(DP\) 问题中,当我们费尽千辛万苦憋出来状态转移方程的时候,一般直接就拿去求解了。
但是,与此同时有一个问题,假如状态转移方程是
此时就有两种方法
- 填表法:枚举
dp[i][j],由dp[i-1][j-1],dp[i-1][j],dp[i][j-1]更新 - 刷表法:使用
d[i][j]去更新dp[i+1][j],dp[i+1][j+1],dp[i][j+1]的值,枚举已知量,并且依据此更新依赖于它的未知量状态,注意此时的未知量可以是之前的(此时需要 \(SPFA\) 松弛),也可以是之后的
通常使用的都是比较直观的填表法,但是当dp[i][j]转移而来的状态不是固定的,那么就需要使用刷表法
简介
\(DAG\) 上 DP 一般是选择拓扑序或 SPFA,简要说明一下两种方法
例题
接下来为了清晰直观的了解 \(DAG\) 上的 DP,引入几道例题
矩形嵌套
对于这道题,我们先观察两个矩形 \(X\),\(Y\) 如何可以进行嵌套。
根据题意很自然的知道,\(X\) 可以套在 \(Y\) 中的条件
\(X_l<Y_l \ and \ X_h<Y_h\) 或者 \(X_l<Y_h \ and \ X_h<Y_l\)
那么我们便以此来进行建图,满足条件的 \(X\),\(Y\),建一条 \(Y\) 指向 \(X\) 的有向边。易知,图中绝对无环。进行拓扑排序。

浙公网安备 33010602011771号