动态规划的几种模型
动态规划的几种模型
背包模型
- 0-1 背包 v:从大到小 f[i][w] = max(f[i-1][w],f[i-1][w-wi]+vi)
- 完全背包 v: 从小到大 f[i][w] = max(f[i-1][w],f[i][w-wi]+vi)
- 多重背包: 二进制优化为0-1背包 v: 从大到小
限制:
不超过w:
要求填满w: 初始化为inf 或-inf,重量为0初始化为0
有时==w,也可转化为<=w;需要看题目地条件限制
LIS
LIS(最长上升子序列)的O(nlogn)的优化:
- LIS优化成O(nlogn)在于记录并更新b[i] b[i] 表示长度为i的LIS中末尾最小的元素
- b[]有着有序的性质,能够二分查找
LCS
LCS(最长公共子串的递推关系:
\(dp[i][j] = dp[i-1][j-1]+1 \quad if(s1[i]==s2[j])\)
\(dp[i][j] = max(dp[i-1][j],dp[i][j-1]) \quad if(s1[i]!=s2[j])\)
复杂的难以顺序性求解(一般指for结构递推)
记忆化搜索