分组背包

作者: Tsukinousag | 来源:发表于2021-02-19 20:23 被阅读0次

原题链接

有 N 组物品和一个容量是 V 的背包。

每组物品有若干个,同一组内的物品最多只能选一个
每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。

求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。

输出最大价值。

#include <iostream>
#include <algorithm>

using namespace std;

const int N=110;

int n,m;
int s[N],v[N][N],w[N][N];
int dp[N];

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>s[i];
        for(int j=1;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++)//枚举所有的选择,依规定为s[1]开始,s[0]是不选
                if(v[i][k]<=j)
                    dp[j]=max(dp[j],dp[j-v[i][k]]+w[i][k]);
    
    cout<<dp[m]<<endl;
    return 0;
}

相关文章

  • 分组背包

    分组背包是LC(01)背包的一种变形吧。它就是给你一点质量,你不一定全部质量都要选,可以看看HDUOJ的Savin...

  • 分组背包

    原题链接[https://www.acwing.com/problem/content/description/9...

  • 多重背包Ⅰ,Ⅱ/分组背包

    多重背包问题Ⅰ 原题链接[https://www.acwing.com/problem/content/4/] 有...

  • ACM程序设计_期末考试

    HDU Today_Dijkstra Saving HDU_贪心 分组背包 贪心做法 分组背包做法 当时做dp训练...

  • 分组背包问题

    拥有相互排斥的物品(爆炸物)怎么办? 题目: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w...

  • 背包入门

    背包,是动态规划里一类典型的问题,主要有:01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,有依赖背...

  • 背包问题系列之--分组背包问题

    问题描述 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被化为若干组,每组中...

  • 背包九讲系列2——混合背包、二维费用背包、分组背包

    4 混合三种背包问题 4.1 问题 如果将前面1、2、3中的三种背包问题混合起来。也就是说,有的物品只可以取一次(...

  • c语言解决分组背包问题

    1.源码实现 2.编译源码 6.运行及其结果

  • 动态规划-混合、二维费用、分组背包

    混合背包 如果将01背包、完全背包、多重背包三个背包混合起来,也就是说,有的物品只可以取一次(01背包),有的物品...

网友评论

    本文标题:分组背包

    本文链接:https://www.haomeiwen.com/subject/blfzxltx.html