动态规划的几种模型

动态规划的几种模型

背包模型

  1. 0-1 背包 v:从大到小 f[i][w] = max(f[i-1][w],f[i-1][w-wi]+vi)
  2. 完全背包 v: 从小到大 f[i][w] = max(f[i-1][w],f[i][w-wi]+vi)
  3. 多重背包: 二进制优化为0-1背包 v: 从大到小

限制:
不超过w:
要求填满w: 初始化为inf 或-inf,重量为0初始化为0
有时==w,也可转化为<=w;需要看题目地条件限制

LIS

LIS(最长上升子序列)的O(nlogn)的优化:

  1. LIS优化成O(nlogn)在于记录并更新b[i] b[i] 表示长度为i的LIS中末尾最小的元素
  2. 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结构递推)

记忆化搜索

原文地址:https://www.cnblogs.com/fridayfang/p/11079069.html