当前位置:网站首页>分组背包呀

分组背包呀

2022-04-23 07:21:00 2020100XWH

所有物品分成k组,组内互斥

对组01背包,最后一维枚举组中哪个

#include<bits/stdc++.h>
using namespace std;
int dp[1005];
struct one{
    int m,w;
};
vector <one> v[1005];
int main()
{
    int n,m;
    cin>>m>>n;
    int a,b,c;
    for(int i=1;i<=n;++i)
    {
        cin>>a>>b>>c;
        v[c].push_back((one){a,b});
    }
    for(int i=1;i<=1000;++i)
    {
        if(v[i].size())
        {
            for(int j=m;j>=0;--j)
            {
                for(int k=0;k<v[i].size();++k)
                {
                    if(j>=v[i][k].m)
                    dp[j]=max(dp[j],dp[j-v[i][k].m]+v[i][k].w);
                }
            }
        }
    }
    cout<<dp[m];
    return 0;
}

 通天之分组背包 - 洛谷

版权声明
本文为[2020100XWH]所创,转载请带上原文链接,感谢
https://blog.csdn.net/xuwnehao/article/details/124351809