美文网首页
分组背包

分组背包

作者: Vincy_ivy | 来源:发表于2019-06-28 11:52 被阅读0次

分组背包是LC(01)背包的一种变形吧。它就是给你一点质量,你不一定全部质量都要选,可以看看HDUOJ的Saving HDU,如果用01背包算出来就是3,用分组背包或者贪心算出来就是5
模板

//n为物品种类,v是背包容量,pi为物品价格,m为物品质量
//前面的i也得是1,不能是0
for(int i=1;i<=n;i++){
    for(int j=v;j>=0;j--){
        for(int k=1;k<=m[i];k++){
            int t1=k,t2=k*pi[i];
            if(j<k)
                continue;
            dp[j]=max(dp[j],dp[j-t1]+t2);
        }
    }
}
cout<<dp[v];

 

Title

某一水题
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n,t,w1[1000001],w2[1000001],t1[1000001],t2[1000001],dp[1000001];
int main(){
    cin>>n>>t;
    for(int i=0;i<n;i++)
        cin>>w1[i]>>t1[i]>>w2[i]>>t2[i];
    for(int i=0;i<n;i++)
        for(int j=t;j>=min(t1[i],t2[i]);j--){
            if(t1[i]<=j)
                dp[j]=max(dp[j],dp[j-t1[i]]+w1[i]);
            else 
                dp[j]=max(dp[j],dp[j-t2[i]]+w2[i]);
        }
    cout<<dp[t];
    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/vcvdcctx.html