小明系列故事——买年货

                                                                         Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)


Problem Description
春节将至,小明要去超市购置年货,于是小明去了自己经常去的都尚超市。
  刚到超市,小明就发现超市门口聚集一堆人。用白云女士的话说就是:“那家伙,那场面,真是人山人海,锣鼓喧天,鞭炮齐呤,红旗招展。那可真是相当的壮观啊!”。好奇的小明走过去,奋力挤过人群,发现超市门口贴了一张通知,内容如下:
  
  值此新春佳节来临之际,为了回馈广大顾客的支持和厚爱,特举行春节大酬宾、优惠大放送活动。凡是都尚会员都可用会员积分兑换商品,凡是都尚会员都可免费拿k件商品,凡是购物顾客均有好礼相送。满100元送bla bla bla bla,满200元送bla bla bla bla bla...blablabla....
  
  还没看完通知,小明就高兴的要死,因为他就是都尚的会员啊。迫不及待的小明在超市逛了一圈发现超市里有n件他想要的商品。小明顺便对这n件商品打了分,表示商品的实际价值。小明发现身上带了v1的人民币,会员卡里面有v2的积分。他想知道他最多能买多大价值的商品。
  由于小明想要的商品实在太多了,他算了半天头都疼了也没算出来,所以请你这位聪明的程序员来帮帮他吧。
Input
输入包含多组测试用例。
每组数据的第一行是四个整数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. 只要钱或者积分满足购买一件商品的要求,那么就可以买下这件商品。

Output
对于每组数据,输出能买的最大价值。
详细信息见Sample。
Sample Input
5 1 6 1 4 3 3 0 3 2 2 3 3 3 3 2 1 0 2 4 2 5 0 0 1 0 4 4 1 3 3 4 3 4 4
Sample Output
12 4
这是一个多维背包问题。状态转移方程:dp[v1][v2][k]=MAX(dp[v1-a][v2][k]+c,dp[v1][v2-b][k]+c,dp[v1][v2][k-1]+c).
/*dp[j][k][t]表示花j元钱,用了k元积分,免费拿了t件商品以后的最大价值*/
AC代码:
/*dp[j][k][t]表示花j元钱,用了k元积分,免费拿了t件商品以后的最大价值*/
#include<stdio.h>
#include<string.h>
int dp[102][102][10],a[102],b[102],val[102];
int max(int a,int b)
{return a>b?a:b;
}
int main()
{int n,i,v1,v2,j,k,t,p,MAX;while(scanf("%d%d%d%d",&n,&v1,&v2,&p)!=EOF) //n是商品个数,v1是钱数,v2是积分数,p是免费拿的商品数{memset(dp,0,sizeof(dp));for(i=0;i<n;i++)scanf("%d%d%d",&a[i],&b[i],&val[i]); //a[i]是需要多少钱能买这件商品,b[i]是用多少积分能换这件商品,val[i]是这件商品的价值for(i=0;i<n;i++)for(j=v1;j>=0;j--)for(k=v2;k>=0;k--)for(t=p;t>=0;t--){int MAX=0; //不要这件商品则最大价值为0if(j>=a[i])  //能用钱买MAX=max(MAX,dp[j-a[i]][k][t]+val[i]);  //用钱买的最大价值if(k>=b[i]) //能用积分兑换MAX=max(MAX,dp[j][k-b[i]][t]+val[i]); //用积分兑换的最大价值if(t>=1)  //能免费拿MAX=max(MAX,dp[j][k][t-1]+val[i]); //免费拿的最大价值dp[j][k][t]=max(dp[j][k][t],MAX);  // 综合比较三者以后的最大价值}printf("%d\n",dp[v1][v2][p]);  //花v1元且用v2积分兑换且免费拿了k件商品后的最大价值}return 0;
}

hdu 4501 小明系列故事——买年货 多重背包相关推荐

  1. HDU 4501 小明系列故事——买年货

    小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tota ...

  2. HDUOJ----4501小明系列故事——买年货(三维背包)

    小明系列故事--买年货 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tota ...

  3. 二维费用 hdu 2159 FATE(完全背包)HDU OJ 4501 小明系列故事——买年货【DP】

    二维费用的背包问题是指:对于每件物品,具有两种不同的费用:选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物品可以得到最大的价值.设这两种代价分别为代价1 ...

  4. HDU 小明系列故事——买年货

    Problem Description 春节将至,小明要去超市购置年货,于是小明去了自己经常去的都尚超市. 刚到超市,小明就发现超市门口聚集一堆人.用白云女士的话说就是:"那家伙,那场面,真 ...

  5. hdu 4506 小明系列故事——师兄帮帮忙

    小明系列故事--师兄帮帮忙 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total ...

  6. HDU 4506 小明系列故事——师兄帮帮忙

    小明系列故事--师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  7. HDU - 4511 小明系列故事——女友的考验(AC自动机+dp)

    题目链接:点击查看 题目大意:小明在点 1 而小明的女朋友在点 n ,现在小明要去找女朋友,满足以下两个条件: 途径的序号满足严格递增 小明的女朋友给小明提出了 m 条路径是不允许走的 在满足上述两条 ...

  8. hdu-4501-小明系列故事——买年货(四维背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4501 #include<stdio.h> #include<string.h> ...

  9. HDU 4511 小明系列故事——女友的考验 ( Trie图 DP )

    题意 :  给出编号从1 ~ n 的 n 个平面直角坐标系上的点,求从给出的第一个点出发到达最后一个点的最短路径,其中有两种限制,其一就是只能从编号小的点到达编号大的点,再者不能走接下来给出的 m 个 ...

最新文章

  1. linux免安装nginx,Nginx免安装包制作工具:Nginx-portable
  2. 建了个龙悦居社区网www.long360.net,图片独立部署
  3. CodeForces - 1252K Addition Robot(线段树维护矩阵)
  4. jquery实现导航栏鼠标点击后实行背景高亮,点击离开恢复(超级简单!!!!)...
  5. 【Oracle】闪回表
  6. kubectl apply -f weave.yaml之后dns没有启动起来 weave-net CrashLoopBackOff
  7. 分享:第十届“泰迪杯”数据挖掘挑战赛优秀作品--A1-基于深度学习的农田害虫定位与识别研究(一)
  8. PyQt5多个GUI界面设计
  9. 软件开发生命周期模型总结
  10. Mysql横向分组统计
  11. 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
  12. # Python第一节课
  13. 顶点法线计算的几种方式
  14. Unity Movetowards方法
  15. Typora如何将图片使用相对路径保存到统一文件夹中(解决.md文档传输丢图片的方法)
  16. win10网上邻居无法显示计算机,w10网上邻居看不到其他电脑的解决方法[多图]
  17. 小程序空格解决文字分散对齐
  18. 学生档案信息管理系统java_基于jsp的学籍档案信息管理系统-JavaEE实现学籍档案信息管理系统 - java项目源码...
  19. python学习——算法训练,第二天
  20. 有趣的智能图像处理demo汇总

热门文章

  1. Spring Integration 4.3.10 发布,Spring 消息通信
  2. 如何用JavaScript判断dom是否有存在某class的值?
  3. (二)线程同步_3---在类中使用相互独立的属性同步
  4. iOS SEL类型和创建
  5. HTML5-WebSocket实现对服务器CPU实时监控
  6. 第九课:循环链表与双向链表
  7. 利用Eclipse的Update组件实现适合企业应用的更新组件(1)
  8. double转整数问题
  9. unity2017.1.0f3与旧的粒子系统不兼容
  10. vs2010 vc nmake编译openssl-0.9.8e