HDU[3033]I love sneakers!(分组背包)

来源:互联网 发布:电脑淘宝没有登陆页面 编辑:程序博客网 时间:2024/06/03 17:29

传送门HDU3033

Description

经过几个月的艰苦学习,Iserlohn终于赢得了全额奖学金。作为一个运动鞋狂热爱好者,他决定用所有的钱在运动鞋商店进行消费。
有一些球鞋Iserlohn要收集,如Air Jordan 和 Nike Pro。而每个品牌已发布各种产品。由于,Iserlohn绝对是一个运动鞋狂热,他意欲购买每个品牌至少有一个产品。
虽然每个产品的都有相应的定价,但是在Iserlohn心中也有一个价值倾向。由于他的钱有限,他希望最大限度地提高鞋的总价值。显然,作为一个收藏家,他不会购买相同产品的两次。
现在,Iserlohn需要你帮他找到他的答案,即在至少购买每个品牌的一个产品的情况下,使得所有运动鞋在他心中的总价值最高。

Input

第1行包含三个整数N,M,K(1<=N<=100,1 <= M<= 10000,1<=K<=10)分别表示共有N种产品,M的钱和K种品牌。
接下来N行,每行三个整数a,b,c(1<=a<=k, 0<=b,c<100000)分别表示该商品属于哪种品牌,商品标价以及他心目中的价格。

Output

只有一个正整数,输出他心中的最大价值,如果不能满足他的要求,输出“Impossible”

Solution

  • 显然这是一道特殊的分组背包
  • 每组选择个数必须≥1
  • f[i][j]表示前i类体积不大于m的最大价值
  • 分为同组转移和前一组转移两种
  • 为了避免0费的运动鞋被买两次,我们把同组转移放在前面

Code

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;int n,m,K,x;int group[11][100007],f[11][10007],v[100007],w[100007];int main(){    while (scanf("%d%d%d",&n,&m,&K)!=EOF){        memset(group,0,sizeof(group));        memset(v,0,sizeof(v));        memset(w,0,sizeof(w));        for (int i=1;i<=n;i++){            scanf("%d%d%d",&x,&v[i],&w[i]);            group[x][++group[x][0]]=i;        }        memset(f,-1,sizeof(f));        f[0][0]=0;        for (int i=1;i<=K;i++)        for (int k=1;k<=group[i][0];k++)        for (int j=m;j>=v[group[i][k]];j--){            if (f[i][j-v[group[i][k]]]!=-1)                f[i][j]=max(f[i][j],f[i][j-v[group[i][k]]]+w[group[i][k]]);            if (f[i-1][j-v[group[i][k]]]!=-1)                f[i][j]=max(f[i][j],f[i-1][j-v[group[i][k]]]+w[group[i][k]]);        }        int ans=-1;        for (int i=0;i<=m;i++) ans=max(ans,f[K][i]);        if (ans==-1) printf("Impossible\n");            else printf("%d\n",ans);    }    return 0;}

I am a fox.
以上です

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 林述巍年龄多大 巍澜各种道具play 林述巍多少岁 林述巍今年多少岁 巍读音 钟明巍阿丑全文免费阅读 阿丑钟明巍全文免费阅读 巍子 巍子老婆 巍子个人资料 巍澜道具play 巍拼音 巍字组词 巍山 巍山古城 巍山县 巍山特产 巍山房价 巍山商贸 巍山镇 巍山龙翔赛鸽寄养中心 巍山龙翔公棚 大理巍山住宿 大理巍山宾馆 大理巍山酒店 巍山沉香64号院 巍山旅游景点 巍峨意思 巍峨 巍峨的意思 巍峨近义词 巍峨反义词 巍峨拼音 巍峨的拼音 巍峨怎么读 巍峨的什么 巍峨读音 巍峨的近义词 巍峨的反义词 巍峨什么意思 巍峨是什么意思