混合背包(信息学奥数一本通-T1270)
【题目描述】
一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
【输入】
第一行:二个整数,M(背包容量,M≤200),N(物品数量,N≤30);
第2..N+1行:每行三个整数Wi,Ci,Pi,前两个整数分别表示每个物品的重量,价值,第三个整数若为0,则说明此物品可以购买无数件,若为其他数字,则为此物品可购买的最多件数(Pi)。
【输出】
仅一行,一个数,表示最大总价值。
【输入样例】
10 3
2 1 0
3 3 1
4 5 4【输出样例】
11
【源程序】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 10001
#define MOD 2520
#define E 1e-12
using namespace std;
int m,n;
int w[N],c[N],num[N],f[N];
void ZeroOnePack(int cost,int weight)
{for(int v=m;v>=weight;v--)f[v]=max(f[v],f[v-weight]+cost);
}
void CompletePack(int cost,int weight)
{for(int v=weight;v<=m;v++)f[v]=max(f[v],f[v-weight]+cost);
}
void MultiplePack(int cost,int weight,int num)
{for(int j=m;j>=0;j--)for(int k=0;k<=num;k++)if(j-k*weight>=0)f[j]=max(f[j],f[j-k*weight]+k*cost);
}
int main()
{cin>>m>>n;for(int i=1;i<=n;i++)cin>>w[i]>>c[i]>>num[i];for(int i=1;i<=n;i++){if(num[i]==1)//0-1背包ZeroOnePack(c[i],w[i]);else if(num[i]==0)//完全背包CompletePack(c[i],w[i]);else//多重背包MultiplePack(c[i],w[i],num[i]);}cout<<f[m]<<endl;return 0;
}
混合背包(信息学奥数一本通-T1270)相关推荐
- 信息学奥数一本通(1170:计算2的N次方)
1170:计算2的N次方 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 15778 通过数: 8179 [题目描述] 任意给定一个正整数N(N<=1 ...
- 信息学奥数一本通(1004:字符三角形)
1004:字符三角形 时间限制: 1000 ms 内存限制: 66536 KB 提交数: 107002 通过数: 58798 [题目描述] 给定一个字符,用它构造一个底边长5个 ...
- 买书(信息学奥数一本通-T1293)
[题目描述] 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案? [输入] 第一行为n和m.一个整数 n,代表总共钱数.(0 ≤ n ≤ 1000) ...
- 货币系统(信息学奥数一本通-T12973)
[题目描述] 给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案. [输入] 第一行为n和m. [输出] 一行,方案数. [输入样例] 3 10 //3种面值组成面值为10的方 ...
- 完全背包问题(信息学奥数一本通-T1268)
[题目描述] 设有n种物品,每种物品有一个重量及一个价值.但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的 ...
- 信息学奥数一本通 1212:LETTERS 搜索与回溯(耙耙)
1212:LETTERS 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 11866 通过数: 5252 [题目描述] 给出一个roe×col的大写字母矩阵,一开始的位置为左上角, ...
- 数字组合(信息学奥数一本通-T1291)
[题目描述] 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如: n=5,5个数分别为1,2,3,4,5,t=5: 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式. [输入 ...
- 庆功会(信息学奥数一本通-T1269)
[题目描述] 为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员.期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力. [输入] 第一行二个数n(n ...
- 清华大学计算机陈立杰,他15岁考入清华,被称为“信息学奥数天才”,一句话让所有人感动...
原标题:他15岁考入清华,被称为"信息学奥数天才",一句话让所有人感动 前段时间,网上被一段清华大学特将奖学金答辩的视频刷频,各路"神仙"除了各种满分成绩外,还 ...
最新文章
- 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...
- ResultSet 的相关介绍
- hadoop博客 oschina
- 【转载】关于RabbitMQ的高可用性
- ZZULIOJ 1058: 求解不等式
- 魅族营销翻车,被骂上热搜,官博致歉并暂停运营两天...
- zabbix第一篇:zabbix安装及使用
- 转太强了!一文讲透了标准Web系统的架构分层~
- 全源最短路径 - floyd算法 - O(N ^ 3)
- 6. access_token
- 微信3D小游戏已达数百款,这里肯定有你没玩过的小游戏!
- 想学PLC编程,先弄清5种PLC专用语言
- sklearn学习——递归特征消除法(RFE)
- iOS前后台切换和监听
- MT管理系去弹窗【失败】
- 自然语言处理3 -- 词性标注
- 2 | TGA文件格式分析
- elasticsearch7.x catAPI之indices
- Ubuntu安装wordpress教程
- RT-Thread移植到STM32单片机过程