HDU 3033 分组背包
给出N个物品。M金钱。W种类
给出N个物品的性质:所属种类,花费。价值
求每一种类物品至少一个的前提下,所能购买到的最大价值
dp[i][k]表示在第i种物品。总花费为k的最大价值
dp[i][k]=Max(dp[i][k],dp[i][k-a[i][j].p]+a[i][j].v);
dp[i][k]=Max(dp[i][k],dp[i-1][k-a[i][j].p]+a[i][j].v);
一定要先推断从本组更新,避免同一个物品被用了两次
dp[i][k]==-1 表示该状态不可到达
#include "stdio.h"
#include "string.h" struct node
{
int p,v;
}a[11][101];
int dp[11][10010];
int c[11];
int Max(int a,int b)
{
if (a<b) return b;
else return a;
}
int main()
{
int n,m,i,j,k,x,ans,w;
while (scanf("%d%d%d",&n,&m,&w)!=EOF)
{
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
for (i=1;i<=n;i++)
{
scanf("%d",&x);
c[x]++;
scanf("%d%d",&a[x][c[x]].p,&a[x][c[x]].v);
} memset(dp,-1,sizeof(dp));
dp[0][0]=0;
for (i=1;i<=w;i++)
for (j=1;j<=c[i];j++)
for (k=m;k>=a[i][j].p;k--)
{
if (dp[i][k-a[i][j].p]!=-1)
{
dp[i][k]=Max(dp[i][k],dp[i][k-a[i][j].p]+a[i][j].v);
}
if (dp[i-1][k-a[i][j].p]!=-1)
{
dp[i][k]=Max(dp[i][k],dp[i-1][k-a[i][j].p]+a[i][j].v);
} } ans=-1;
for (i=0;i<=m;i++)
ans=Max(ans,dp[w][i]);
if (ans==-1) printf("Impossible\n");
else printf("%d\n",ans); }
return 0;
}
HDU 3033 分组背包的更多相关文章
- HDU 3033 分组背包变形(每种至少一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 3033 分组背包(至少选一个)
分组背包(至少选一个) 我真的搞不懂为什么,所以现在就只能当作是模板来用吧 如果有大牛看见 希望评论告诉我 &代码: #include <cstdio> #include < ...
- HDU 1712 分组背包
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- ACboy needs your help(HDU 1712 分组背包入门)
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 1712 (分组背包入门)
http://acm.hdu.edu.cn/showproblem.php?pid=1712 问题 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].这些物品被划分为若干组, ...
- HDU 4341 分组背包
B - Gold miner Time Limit:2000MS Memory Limit:32768KB Description Homelesser likes playing ...
- HDU 3033 组合背包变形 I love sneakers!
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 背包系列 hdu 3535 分组背包
题意: 有n组工作,现在有T分钟时间去做一些工作.每组工作里有m个工作,并且类型为s,s类型可以为0,1,2,分别表示至少选择该组工作的一项,至多选择该工作的一项,不限制选择.每个工作有ci,gi两个 ...
- hdu 3033 I love sneakers! 分组背包
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- 分区 Service Bus 队列和主题
编辑人员注释:本文章由 Windows Azure Service Bus 团队的二级项目经理 Ruppert Koch 撰写. 上周,Microsoft 发布了 Azure SDK 2.2 和 Se ...
- JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET
JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...
- GTW likes math(简单数学)
GTW likes math Accepts: 472 Submissions: 2140 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- jQuery对DOM的操作
"jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对 ...
- TextBox控件只允许输入出生日期,并验证年龄不得小于18岁
1.Body tag <form id="form1" runat="server"> <div> <asp:Label ID=& ...
- 使用wget -i下载多个文件
使用wget -i下载多个文件 命令: wget -i filelist.txt 说明: 首先,保存一份下载链接文件 cat > filelist.txt url1 url2 url3 url4
- UnixShell编程(第三版)
这本书相当老了,04年的,现在 在linux上做实验. 1,date 显示日期. 2,who 显示用户,who am i 3,echo 后面字符串会全部输出,,会过滤掉多余空格,单双引号,分号等. ...
- 转:FileReader详解与实例---读取并显示图像文件
~~~针对需要读取本地图像,并立即显示在浏览器的情况,由于chrome firefox出于安全限制,input file并不返回文件的真实路径,经测试IE6/7/8都会返回真实路径,所以chrome, ...
- File中操作路径的API(转)
这几天一直在搞Java,模板引擎系列和程序猿执业修养系列都暂停了,在Java上忙的不亦乐乎!由于对Java还不太熟悉,经历了各种纠结终于完成了任务.以下是关于Java获取当前目录的方法的备忘录. 原文 ...
- asp.net从客户端检测到有潜在危险的Request.Form 值
asp.net开发中,经常遇到“从客户端检测到有潜在危险的Request.Form 值”错误提示,很多人给出的解决方案是: 1.web.config文档<system.web>后面加入这一 ...