HDU 3535 【背包】
题意:
给出n组数据,每组数据有一个类型。
0代表至少选择一个,1代表至多选择一个,2代表任意选择。
给出背包容量。
如果背包不能满足最基本的要求输出-1。
思路:
背包问题变相考察~
当0的时候初始化为-INF,然后就能保证至少选择一个。
当1或2的时候初始化上一层的值,然后1和2稍微有点区别,1只能从上一层得到下一层,2可以用本层更新。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int c[],w[];
int dp[][];
int main()
{
int n,t;
while(scanf("%d%d",&n,&t)!=EOF)
{
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++)
{
int m,s;
scanf("%d%d",&m,&s);
for(int j=;j<=m;j++)
{
scanf("%d%d",&w[j],&c[j]);
}
if(s==)
{
for(int j=;j<=t;j++)
{
dp[i][j]=-;
}
for(int j=;j<=m;j++)
{
for(int k=t;k>=w[j];k--)
{
//dp[i][k]=max(dp[i][k],dp[i-1][k-w[j]]+c[j]);
//dp[i][k]=max(dp[i][k],dp[i][k-w[j]]+c[j]);
dp[i][k]=max(dp[i][k],max(dp[i-][k-w[j]]+c[j],dp[i][k-w[j]]+c[j]));
}
}
}
else if(s==)
{
for(int j=;j<=t;j++)
{
dp[i][j]=dp[i-][j];
}
for(int j=;j<=m;j++)
{
for(int k=t;k>=w[j];k--)
{
dp[i][k]=max(dp[i][k],dp[i-][k-w[j]]+c[j]);
}
}
}
else
{
for(int j=;j<=t;j++)
{
dp[i][j]=dp[i-][j];
}
for(int j=;j<=m;j++)
{
for(int k=t;k>=w[j];k--)
{
dp[i][k]=max(dp[i][k],dp[i][k-w[j]]+c[j]);
}
}
}
}
if(dp[n][t]<)
printf("-1\n");
else
printf("%d\n",dp[n][t]);
}
}
HDU 3535 【背包】的更多相关文章
- hdu 3535 背包综合题
/* 有n组背包,每组都有限制 0.至少选一项 1.最多选一项 2.任意选 */ #include <iostream> #include <cstdio> #include ...
- HDU 3535 分组混合背包
http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...
- [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...
- HDU 3535 AreYouBusy(混合背包)
HDU3535 AreYouBusy(混合背包) http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意: 给你n个工作集合,给你T的时间去做它们.给你m和 ...
- hdu 3535 AreYouBusy 分组背包
AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- HDU 3535 AreYouBusy 经典混合背包
AreYouBusy Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Su ...
- HDU - 3535:AreYouBusy (分组背包)
题意:给你n个工作集合,给你T的时间去做它们.给你m和s,说明这个工作集合有m件事可以做,它们是s类的工作集合(s=0,1,2,s=0说明这m件事中最少得做一件,s=1说明这m件事中最多只能做一件,s ...
- HDU 3535 AreYouBusy (混合背包之分组背包)
题目链接 Problem Description Happy New Term! As having become a junior, xiaoA recognizes that there is n ...
随机推荐
- 第一篇帖子,就弄个JS动态公告浏览吧,直接上代码
.scroll{ margin-left:45px; margin-top:-150px; height:100px; width:300px;} <script lan ...
- 【转】HTML - embed 与 object 之争
在 HTML 里嵌入文本和图片之外的事物,就会用到嵌入标签,而嵌入标签在各浏览器之间的不统一,一直是让开发人员很头痛的问题.一切都要从嵌入 SUN 公司的 Applet Java 小程序开始. 当时, ...
- 远程访问linux环境安装图形界面问题解决汇总
本文内容转摘于其他网页,仅用于学习: 通常Linux出现 DISPLAY 尚未设置 解决方法,在root用户目录下执行#xhost +: [root@TEST144239 ~]# xhost + ac ...
- Oracle自增主键的添加[sequence]--表数据已存在
--增加主键ID ); --设置sequence使ID自增 create sequence SEQ_ID minvalue maxvalue start ; --将id的值设置为sequence Up ...
- DW(一):大数据DW架构参考
DW一直以来是企业信息与决策支持系统的核心组件,随着各类日志.社交.传感等非结构化数据的加入,企业内部数据按指数级增长,传统DW已经达到一个关键临界点——需要大量的资源投入到硬件.优化.支持和维护中, ...
- rm命令
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西 ...
- Ajax请求在IE和Google Chrome中可以响应,在Firefox中无法响应
在工作中碰到这么一个问题,发送ajax请求,在IE和chrome中可以正常的响应,但是在Firefox中无法响应,代码如下: JS代码: function Sure(obj) { var statu ...
- 修改webftp,在线文件管理
项目中要添加一个文件管理功能,允许用户维护自己的静态HTML文件. 在网上找了一个现成的在线PHP文件管理工具:webftp 下载地址:http://down.chinaz.com/soft/3067 ...
- 使用 Windows PowerShell 来管理和开发 windowsazure.cn 账户的特别注意事项
6月6日,微软面向中国大陆用户开放了Microsoft Azure公众预览版的申请界面.大家可以申请免费的 beta 试用,收到内附邀请码的通知邮件后只需输入激活码即可开始免费试用.具体网址为: ht ...
- (转)jQuery禁止右键菜单,全选
本文转载自:http://www.cnblogs.com/lucker/archive/2012/09/21/2696464.html $("body").bind("c ...