hdu 4501 小明系列故事——买年货(二维费用背包问题)
来源:互联网 发布:截取视频片段软件 编辑:程序博客网 时间:2024/04/29 15:46
题目链接~~点我打开题目哦~~
该题是一道二维费用背包问题,用dp[v1][v2][k]表示用v1的钱,v2的积分和k件免费产品时,能够获得的最大价值,设第i件商品的价钱为c1,积分为d1,价值为val,则状态转移方程可写成:
dp[v1][v2][k]=max(dp[v1][v2][k],dp[v1-c1][v2][k]+val,dp[v1][v2-d1][k]+val,dp[v1][v2][k-1]+val)。
上代码吧!
#include<iostream>#include<cstdio>#include<cstring>#define Max(x,y) x>y?x:yint dp[110][110][10];int cost[110],integral[110],val[110];int main(){ int n,v1,v2,k; while(~scanf("%d%d%d%d",&n,&v1,&v2,&k)) { int total_cost=0,total_integral=0; for(int i=1;i<=n;i++) scanf("%d%d%d",&cost[i],&integral[i],&val[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) for(int j=v1;j>=0;j--) for(int q=v2;q>=0;q--) for(int p=k;p>=0;p--) { int temp=0; if(j>=cost[i]) temp=Max(temp,dp[j-cost[i]][q][p]+val[i]); if(q>=integral[i]) temp=Max(temp,dp[j][q-integral[i]][p]+val[i]); if(p>0) temp=Max(temp,dp[j][q][p-1]+val[i]); dp[j][q][p]=Max(dp[j][q][p],temp); } printf("%d\n",dp[v1][v2][k]); } return 0;}
- hdu 4501 小明系列故事——买年货(二维费用背包问题)
- 二维费用 hdu 2159 FATE(完全背包)HDU OJ 4501 小明系列故事——买年货【DP】
- hdu 4501 小明系列故事——买年货(多维费用01背包)
- HDU 4501 小明系列故事——买年货(二维背包变形)
- hdu 4501 小明系列故事——买年货_二维背包
- hdu 4501 小明系列故事——买年货(四维背包问题)
- hdu 4501 小明系列故事——买年货(多维01背包)
- hdu 4501 小明系列故事——买年货(多维背包)
- hdu-4501-小明系列故事——买年货(四维背包)
- HDU 4501 小明系列故事——买年货(多重背包)
- HDU 4501 小明系列故事——买年货(多维01背包)
- hdu 4501 小明系列故事——买年货(三维背包)
- hdu 4501 (小明系列故事——买年货) (多维背包)
- HDU 4501 小明系列故事——买年货(三维背包)
- HDU 4501 小明系列故事——买年货(三维背包)
- HDU 4501 小明系列故事——买年货(三维背包)
- HDU ACM 4501 小明系列故事——买年货->多维背包(多为01背包)
- hdu 4501 小明系列故事——买年货(多维背包)
- XML 学习总结
- [leetcode] subsets
- 从Entry Point到main函数调用(3):_heap_init
- tcmalloc源码阅读(三)---ThreadCache分析之线程局部缓存
- Sql Server数据库触发器实例讲解
- hdu 4501 小明系列故事——买年货(二维费用背包问题)
- maven灵活解决环境问题
- perl 不放回抽样
- JSON-framework 与 JSONKit的初步评估
- linux脚本中if参数含义
- 职业理想无需从小树立
- setsockopt用法与解析
- 购买浏览器认证的证书
- 检索 COM 类工厂中 CLSID 为 {} 的组件时失败,原因是出现以下错误: 80070005