小明系列故事——买年货

Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 2146    Accepted Submission(s): 953

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
 
Source
思路:
  由于限制条件有三个,于是我们必须要像二维费用背包一样,但这道题又不同于我们不妨设一个x,y,z到三维坐标,然后将其化解成为三个二维到费用包,最后组合为对角线,求解
代码:
 #include<stdio.h>
#include<string.h>
#include<stdlib.h> int dp[][][];
struct goods
{
int a; //gooda price
int b; // 积分
int val ; // real price
}; goods sta[];
int main()
{
int n,k,v1,v2,i,j,g,w,temans;
//freopen("test.in","r",stdin);
// freopen("test.out","w",stdout);
while(scanf("%d%d%d%d",&n,&v1,&v2,&k)!=EOF)
{
for(i=;i<n;i++)
scanf("%d%d%d",&sta[i].a,&sta[i].b,&sta[i].val);
memset(dp,,sizeof(dp));
for(i=;i<n;i++)
{
for(g=v1 ; g>= ;g--)
{
for(w=v2 ; w>= ; w--)
{
for(j=k ; j>= ; j--)
{
temans=;
if( g>=sta[i].a && temans < dp[g-sta[i].a][w][j] + sta[i].val )
temans = dp[g-sta[i].a][w][j] + sta[i].val ;
if( w>=sta[i].b && temans< dp[g][w-sta[i].b][j] + sta[i].val )
temans = dp[g][w-sta[i].b][j] + sta[i].val ;
if( j>= && temans < dp[g][w][j-] + sta[i].val )
temans = dp[g][w][j-] + sta[i].val ;
if(temans>dp[g][w][j])dp[g][w][j]=temans;
}
}
}
}
printf("%d\n",dp[v1][v2][k]);
}
return ;
}

最新文章

  1. sql条件为空查询全部,不为空按条件查询以及多条件筛选查询。
  2. JAVA 1.6 流程控制语句
  3. javascript多态 - 类形式实现demo
  4. 深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算
  5. struts1 Demo
  6. C# 3.0 扩展方法[转载]
  7. 使用 Spring Data JPA 简化 JPA 开发
  8. poj 2773 Happy 2006 容斥原理+二分
  9. linux旁边flv注射MetaData工具
  10. Android SDK文档如何查找
  11. boost库之graph入门
  12. javascript-变量-作用域
  13. Tensorflow学习笔记(对MNIST经典例程的)的代码注释与理解
  14. Solr 5.5.0 + tomcat 7.0.69 + zookeeper-3.4.6 Cloud部署
  15. 292. Nim Game(easy)
  16. crontab清理日志
  17. 启动Tomcat的时候8080被占用
  18. C++对象赋值问题
  19. robot framework ——关键字run keyword if 如何在一个条件下接多个执行语句,以及如何写复杂条件句
  20. 实现JTextfield 的右键 复制、剪切、粘贴功能。

热门文章

  1. Android只播放gif动画
  2. jquery的each函数的用法
  3. 不明白的sizeof(enum)数据结构存储问题
  4. Ubuntu Linux自动发邮件配置及邮件发送脚本
  5. mysql必知必会(四、检索数据,五、排序检索数据,六、过滤数据,七、数据过滤)
  6. 火速提升Android仿真器的运行速度 ——仿真器Genymotion
  7. 【ES】elasticsearch学习笔记
  8. Linux command 系统快捷键
  9. DockerHub基于Github自己主动化构建
  10. JNDI配置c3p0连接池