分组背包原理

简介: 笔记

分组背包


类似多重背包,只是将每件物品选几个变成每组物品选哪一个

9.png



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

int n, m;
int f[N];
int v[N][N], w[N][N], s[N];
int main() {
  cin >> n >> m;
  for (int i = 1;i <= n;++i) {
    cin >> s[i];
    for (int j = 0;j < s[i];++j) {
      cin >> v[i][j] >> w[i][j];
    }
  }
  for (int i = 1;i <= n;++i) {
    for (int j = m;j >= 0;--j) {
      for (int k = 0;k < s[i];++k) {
        if (v[i][k] <= j)f[j] = max(f[j], f[j - v[i][k]] + w[i][k]);
      }
    }
  }
目录
相关文章
|
6月前
|
算法 JavaScript
class074 背包dp-分组背包、完全背包【算法】
class074 背包dp-分组背包、完全背包【算法】
47 0
|
1月前
|
存储 算法
|
12月前
|
算法
代码随想录算法训练营第四十六天 | LeetCode 139. 单词拆分、多重背包、背包总结
代码随想录算法训练营第四十六天 | LeetCode 139. 单词拆分、多重背包、背包总结
74 1
|
算法 C语言
【软考总结】-<算法>动态规划法--0-1背包问题
在上篇博客中,我们讲了动态规划法在最长公共子序列问题中的应用,(详情请见博客《算法:动态规划法--最长公共子序列》)。这次学习了0-1背包问题,对动态规划法的思想理解了更深了一层,以下是我的简单理解,希望能为路过的读者带来帮助。
261 0
|
算法 C++
|
算法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
134 0
【每日挠头算法题】Acwing 756. 蛇形矩阵 —— 巧妙解法
代码随想录刷题|贪心算法理论 LeetCode455.分发饼干 376. 摆动序列 53. 最大子序和
代码随想录刷题|贪心算法理论 LeetCode455.分发饼干 376. 摆动序列 53. 最大子序和
代码随想录刷题|贪心算法理论 LeetCode455.分发饼干 376. 摆动序列 53. 最大子序和
|
算法
|
人工智能 算法