多重背包原理

简介: 笔记

多重背包


每件物品的个数有限制


朴素算法

与完全背包的朴素算法类似 时间复杂度O ( N ∗ V ∗ S )

7.png



优化成一维时需要从大到小枚举j

for (int i = 1;i <= n;++i) {
  for (int j = 0;j <= m;++j) {
    for (int k = 0;k * v[i] <= j && k <= s[i];++k) {
      f[i][j] = max(f[i][j], f[i - 1][j - k * v[i]] + k * w[i]);
    }
  }
}


二进制优化8.png

int cnt = 0;
for (int i = 1;i <= n;++i) {
   int a, b, s;
   cin >> a >> b >> s;
   int k = 1;
   while (k <= s) {
    cnt++;
    v[cnt] = a * k;
    w[cnt] = b * k;
    s -= k;
    k *= 2;
   }
   if (s > 0) {
    ++cnt;
    v[cnt] = a * s;
    w[cnt] = b * s;
   }
}
n = cnt;
for (int i = 1; i <= n;++i) {
   for (int j = m;j >= v[i];--j) {
    f[j] = max(f[j], f[j - v[i]] + w[i]);
   }
}


目录
相关文章
|
存储 人工智能 算法
【算法分析与设计】动态规划(下)(一)
【算法分析与设计】动态规划(下)
|
1月前
|
存储 算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
这篇文章是关于动态规划算法中矩阵连乘问题的详解,包括问题描述、最优子结构、重叠子问题、递归方法、备忘录方法和动态规划算法设计的步骤。
101 0
|
6月前
|
算法
算法系列--动态规划--背包问题(4)--完全背包拓展题目(下)
算法系列--动态规划--背包问题(4)--完全背包拓展题目(下)
46 0
|
6月前
|
算法
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
45 0
|
6月前
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集
44 0
|
消息中间件 人工智能 算法
【算法分析与设计】动态规划(下)(二)
【算法分析与设计】动态规划(下)
|
存储 算法
【算法分析与设计】动态规划(下)(三)
【算法分析与设计】动态规划(下)
|
算法
|
人工智能 算法
下一篇
无影云桌面