HDU3449 Consumer(有依赖背包)
来源:互联网 发布:apache impala 安装 编辑:程序博客网 时间:2024/06/05 16:48
【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=3449
题目意思
有N个箱子,每个箱子需要花费Ai的代价
箱子里面有K个物品,K个物品你可以选择买任意个,但每个物品只能买一个,每个物品有相应的花费和价值
你又M的大洋,最后问最多能得到多少价值物品。
解题思路
先对每组选择里的所有物品进行0-1背包处理,但背包容量为(总容量-盒子容量);然后跟上一组的状态比较来决定这一组选择 是选还是不选,取其中的较大值。
代码部分
#include<stdio.h>#include<string.h>const int MAX=100010;int dp[MAX];int tmp[MAX];int max(int a,int b){ return a>b?a:b;}int main(){ int n,sum,p,m,w,v,i,j,k; while(scanf("%d%d",&n,&sum)!=EOF) { memset(dp,0,sizeof(dp)); for(i=0;i<n;i++) { scanf("%d%d",&p,&m); memcpy(tmp,dp,sizeof(dp));//继承前面的 for(j=0;j<m;j++) { scanf("%d%d",&w,&v); for(k=sum-p;k>=w;k--)//先将附件进行1次01背包 tmp[k]=max(tmp[k],tmp[k-w]+v); } for(j=p;j<=sum;j++)//更新能更新的 dp[j]=max(dp[j],tmp[j-p]); //分组背包 } printf("%d\n",dp[sum]); } return 0;}
阅读全文
0 0
- HDU3449 Consumer(有依赖背包)
- HDU3449 - Consumer(依赖背包)
- hdu3449 有依赖的背包问题
- hdu3449 有依赖的背包问题
- HDU3449 Consumer 条件背包DP
- hdu3449 依赖背包
- HDU3449 Consumer 变种背包,还是背包
- 【01背包+完全背包】HDU3449-Consumer
- HDU 3449—— Consumer(有依赖的背包)
- hdoj 3449 Consumer(有依赖的背包)
- 【HDU3449】 consumer
- HDU 3449 Consumer 【有依赖背包】【dp】
- Consumer (HDU_3449) 有依赖的背包问题
- HDU-3449 Consumer(有依赖背包)
- HDU 3449 Consumer(有依赖背包)
- hdu3449(有限制条件的01背包)
- HDU 3449 Consumer(依赖背包)
- HDU 3449 Consumer (依赖背包)
- 基础练习 杨辉三角形
- 购物车加路由
- Util
- 一些颜色的封装和其他
- c++问题1
- HDU3449 Consumer(有依赖背包)
- 基础练习 数列排序
- LeeCode 495. Teemo Attacking
- 如何学好C++语言
- 汇编学习:函数调用过程中的堆栈分析
- c++:为什么模板不支持分离编译?
- 路由
- [BZOJ1003][ZJOI2006]物流运输(最短路+DP)
- hdu