hdu 4501(三维背包问题)
小明系列故事——买年货
刚到超市,小明就发现超市门口聚集一堆人。用白云女士的话说就是:“那家伙,那场面,真是人山人海,锣鼓喧天,鞭炮齐呤,红旗招展。那可真是相当的壮观啊!”。好奇的小明走过去,奋力挤过人群,发现超市门口贴了一张通知,内容如下:
值此新春佳节来临之际,为了回馈广大顾客的支持和厚爱,特举行春节大酬宾、优惠大放送活动。凡是都尚会员都可用会员积分兑换商品,凡是都尚会员都可免费拿k件商品,凡是购物顾客均有好礼相送。满100元送bla bla bla bla,满200元送bla bla bla bla bla...blablabla....
还没看完通知,小明就高兴的要死,因为他就是都尚的会员啊。迫不及待的小明在超市逛了一圈发现超市里有n件他想要的商品。小明顺便对这n件商品打了分,表示商品的实际价值。小明发现身上带了v1的人民币,会员卡里面有v2的积分。他想知道他最多能买多大价值的商品。
由于小明想要的商品实在太多了,他算了半天头都疼了也没算出来,所以请你这位聪明的程序员来帮帮他吧。
每组数据的第一行是四个整数n,v1,v2,k;
然后是n行,每行三个整数a,b,val,分别表示每个商品的价钱,兑换所需积分,实际价值。
[Technical Specification]
1 <= n <= 100
0 <= v1, v2 <= 100
0 <= k <= 5
0 <= a, b, val <= 100
Ps. 只要钱或者积分满足购买一件商品的要求,那么就可以买下这件商品。
详细信息见Sample。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 105;
struct Node
{int a,b,val;
}goods[maxn];
int n,v1,v2,m,k,dp[maxn][maxn][10];int main()
{while(scanf("%d%d%d%d",&n,&v1,&v2,&m)!=EOF){for(int i = 1; i <= n; i++)scanf("%d%d%d",&goods[i].a,&goods[i].b,&goods[i].val);memset(dp,0,sizeof(dp));for(int i = 1; i <= n; i++)for(int j = v1; j >= 0; j--)for(int k = v2; k >= 0; k--)for(int t = m; t >= 0; t--){if(goods[i].a == 0 || goods[i].b == 0) //这里不能是&&,假如a!=0,b=0,那么dp[j][k][t]可能会算重。dp[j][k][t] += goods[i].val;else{if(j >= goods[i].a)dp[j][k][t] = max(dp[j][k][t],dp[j-goods[i].a][k][t] + goods[i].val);if(k >= goods[i].b)dp[j][k][t] = max(dp[j][k][t],dp[j][k-goods[i].b][t] + goods[i].val);}if(t >= 1)dp[j][k][t] = max(dp[j][k][t],dp[j][k][t-1] + goods[i].val);}int ans = 0;for(int i = 0; i <= v1; i++)for(int j = 0; j <= v2; j++)for(int k = 0; k <= m; k++)ans = max(ans,dp[i][j][k]);printf("%d\n",ans);}return 0;
}
hdu 4501(三维背包问题)相关推荐
- hdu 4501 小明系列故事——买年货 多重背包
小明系列故事--买年货 Time Limit: 500 ...
- HDU 3584 三维树状数组
三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ...
- hdu 1240(三维bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240 思路:就是一个简单的bfs,但我搞了好久啊,有一个trick一直没注意到,然后第二组数据就一直过 ...
- hdu 4501 多维0-1背包
小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tota ...
- HDU 4501 小明系列故事——买年货
小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tota ...
- hdu 3236 二维背包
明天来一发 hdu 4501 算是这题的简化版吧 转载于:https://www.cnblogs.com/cnblogs321114287/p/4853512.html
- Python解题 - CSDN周赛第32期 - 运输石油(三维背包)
上期周赛因为最后一题出现bug,再加上都是经典的模板题,问哥就懒得写题解了. 本期也是有两道考过的题目,不过最后一题因为考到了背包问题的特殊类型,还是值得拿出来记个笔记. 第一题:传奇霸业 传奇霸业, ...
- 和项目组研究计算几何
一,凸包 二维凸包:可用极角排序后每次倍增一个点看是否在栈顶两个点内侧,在内侧就加入栈,否则弹出一个.优化是在省去了计算极角的计算量,采用xy排序,从x最小倍增一遍求上边界,再从x最大反过来求下边界. ...
- 腾讯编程马拉松初赛的整理
为什么要叫做变成马拉松那···?明明是acm嘛,很无力的学习了一下算法知识,结果止步于复赛,本想很快的做一下整理,结果中途赶上清明节LOL大赛,于是乎组了个队去参加,到了比赛地点却因为举办方不利,没有 ...
最新文章
- Nature子刊:皮层内脑机接口的主导感
- Java8新特性系列(Lambda)
- 1.7 matlab矩阵元素的引用(可通过下标和序号引用)
- 我的世界 文件保存位置
- 简易mysql数据库调优_MySQL数据库简单实用的优化方法
- 【pyqt5学习】——下拉框comboBox
- java检测用户是否重复登录_Java web工程判断用户是否重复登录
- QT中信号与槽的常见使用
- Win7下安装Flash低版本
- 怎样用springboot开发cs_springboot 系列 springboot 初探
- [Node.js]Domain模块
- 经济数学线性代数第三版课后习题答案
- c语言编程悬臂梁受力分析,悬臂梁受力的分析.doc
- oracle序列建同义词,oracle序列创建同义词
- cdr怎么算曲线周长_cdr怎么计算图形的周长和面积? cdr图形计算长度和面积的技巧...
- 兄弟Brother PT-9200DX 驱动
- 为什么你关不掉手机里的广告?
- WebDAV之葫芦儿·派盘+人升
- Metis异常检测算法率值检测和量值检测源码刨析
- guestbook.php注入,php防注入留言板(simple)
热门文章
- 喜报!「神策 SA 分析师认证」第三期认证名单正式公布
- 关于 To B,我欠粉丝们一个热搜
- 桑文锋的数据“长征”
- 神策数据助力海尔落地 6 大智慧厨房在线场景
- CodeIgniter中Router类的两个方法
- 从放弃迅雷和IDM到自己开发下载工具
- 11月17日学习内容整理:jquery文档处理,事件细讲,动画
- Libvirsh 问题:GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
- 《Java 7程序设计入门经典》一3.7 for循环
- Crontab命令格式