AC_9. 分组背包问题

Posted gcter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AC_9. 分组背包问题相关的知识,希望对你有一定的参考价值。

技术图片

代码:

//9. 分组背包问题
//多重背包问题是分组背包问题的一个特殊情况
/*
每个组的物品有s+1种选择

for(int i = 0;i<n;i++)

    for(int j = m;j>=v;j--)
    
        dp[j] = maxdp[j],dp[j-v[0]]+w[0],dp[j-v[i]]+w[i],.....,dp[j - v[s-1]] + w[s-1]; 
    

dp[m]
*/
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 110;
int n, m;
int dp[N], v[N], w[N];

int main()

    cin >> n >> m;
    for (int i = 0; i < n; i++)
    
        int s;
        cin >> s;
        for (int j = 0; j < s; j++)
            cin >> v[j] >> w[j];
            for (int j = m; j >= 0; j--)
            
                for (int k = 0; k < s; k++)
                
                    if (j>=v[k])
                        dp[j] = max(dp[j], dp[j - v[k]] + w[k]);
                
            
        
    cout << dp[m] << endl;
    return 0;

 

以上是关于AC_9. 分组背包问题的主要内容,如果未能解决你的问题,请参考以下文章

动态规划_01背包_完全背包_多重背包_分组背包

9/6 分组背包+有依赖的背包+基环树

9. 分组背包问题

分组背包+二维费用背包

AcWing 9. 分组背包问题

分组背包(通天之分组背包)