分组背包(每组至少选择一件物品)
来源:互联网 发布:淘宝关键词查询 编辑:程序博客网 时间:2024/05/29 13:25
题意:有n双鞋,a,b,c分别代表型号,价格和舒适度,当拥有m元时,每个型号的鞋至少买一双的最大舒适度是多少?
#include"stdio.h"#include"string.h"#include"stdlib.h"#include"algorithm"#include"math.h"#include"vector"#define M 109#define inf -0x3f3f3f3f#define eps 1e-10#define PI acos(-1.0)using namespace std;int dp[19][10009];struct node{ int v,p; node(){} node(int vv,int pp){v=vv;p=pp;}};vector<node>s[M];int main(){ int n,m,K,i,a,b,c,j,k; while(scanf("%d%d%d",&n,&m,&K)!=-1) { for(i=0;i<=K;i++) s[i].clear(); for(i=1;i<=n;i++) { scanf("%d%d%d",&a,&b,&c); s[a].push_back(node(b,c)); } int flag=0; for(i=1;i<=K;i++) { if((int)s[i].size()==0) flag++; } if(flag) { printf("Impossible\n"); continue; } memset(dp,-1,sizeof(dp)); for(i=0;i<=m;i++) dp[0][i]=0; for(i=1;i<=K;i++) { for(j=0;j<(int)s[i].size();j++) { int v=s[i][j].v; int p=s[i][j].p; for(k=m;k>=v;k--) { if(dp[i-1][k-v]!=-1) { dp[i][k]=max(dp[i][k],dp[i][k-v]+p); dp[i][k]=max(dp[i][k],dp[i-1][k-v]+p); } } } } /*for(i=1;i<=K;i++) { for(j=0;j<=m;j++) printf("%d %d %d\n",i,j,dp[i][j]); }*/ if(dp[K][m]<0) printf("Impossible\n"); else printf("%d\n",dp[K][m]); } return 0;}
0 0
- 分组背包(每组至少选择一件物品)
- hdu 3033 (分组背包---每组内至少取一件)
- I love sneakers! 分组背包(每组至少选一件)
- hdu 3033 I love sneakers!(分组背包,每组至少取一件)
- HDU3033分组背包之每组至少选一
- 【分组背包每组至少一个】HDU 3033
- hdu 3033 分组背包 每组至少选一个
- hdu3033I love sneakers!【分组背包】每组至少取一个
- HDU 3033 I love sneakers! 分组背包+约束限制(每组至少取一个)。
- HDU 3535 AreYouBusy(混合背包+分组背包/至少取一件)
- hdu 3033 I love sneakers!(分组背包,每组至少取1个)
- HDU 3033 I love sneakers! 每组最至少取一个的分组背包
- hdu 3033 I love sneakers! 分组背包之每组至少取一个
- HDU 3033 I love sneakers! (分组背包 每组至少选一个)
- HDOJ 3535 AreYouBusy (背包 每组至少一个)
- 物品选择(有依赖背包问题)
- hdu 1712 分组背包 每组至多取一个背包
- 01背包基础详解(附求解选择的物品)
- 为iOS 6和iOS 7设计界面
- X64系统 注册表和文件重定向 Python
- Matlab学习笔记1
- Lucene学习总结之一:全文检索的基本原理
- 解决struts2 Action中的乱码问题
- 分组背包(每组至少选择一件物品)
- .bash_profile和.bashrc的区别(如何设置生效)
- 练手小项目(2)-生活小助手--身份证查询
- linux 常用网络命令
- 657 - The die is cast
- C语言sscanf和sprintf输入输出使用及Strlen、Memset解释
- leetcode Permutations II
- vs2010(c++)版“hello world”
- hdu1030