题意:

给出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 【背包】的更多相关文章

  1. hdu 3535 背包综合题

    /* 有n组背包,每组都有限制 0.至少选一项 1.最多选一项 2.任意选 */ #include <iostream> #include <cstdio> #include ...

  2. HDU 3535 分组混合背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...

  3. [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...

  4. HDU 3535 AreYouBusy(混合背包)

    HDU3535 AreYouBusy(混合背包) http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意: 给你n个工作集合,给你T的时间去做它们.给你m和 ...

  5. hdu 3535 AreYouBusy 分组背包

    AreYouBusy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  6. HDU 3535 AreYouBusy (混合背包)

    题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...

  7. HDU 3535 AreYouBusy 经典混合背包

    AreYouBusy Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Su ...

  8. HDU - 3535:AreYouBusy (分组背包)

    题意:给你n个工作集合,给你T的时间去做它们.给你m和s,说明这个工作集合有m件事可以做,它们是s类的工作集合(s=0,1,2,s=0说明这m件事中最少得做一件,s=1说明这m件事中最多只能做一件,s ...

  9. HDU 3535 AreYouBusy (混合背包之分组背包)

    题目链接 Problem Description Happy New Term! As having become a junior, xiaoA recognizes that there is n ...

随机推荐

  1. CentOs6.5中安装和配置vsftp

    一.vsftp安装篇 复制代码代码如下: # 安装vsftpdyum -y install vsftpd# 启动service vsftpd start# 开启启动chkconfig vsftpd o ...

  2. Nginx 499错误的原因及解决方法

    今天进行系统维护,发现了大量的499错误, 499错误 ngx_string(ngx_http_error_495_page), /* 495, https certificate error */n ...

  3. jQuery Mobile_事件

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. ef 高级操作

    一:动态拼接条件查询 var expression = PredicateBuilder.True<OQC_MES_INF_UL_QMS_OFFLINE>(); SYS_ROLES_CON ...

  5. jquery读取csv文件并用json格式输出

    直接贴上代码: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untit ...

  6. 在VS 2010中使用 VS2013的解决方案

    本文转载自:http://blog.csdn.net/u011543589/article/details/25563351 今天要用VS2010打开VS2013,一直觉得VS2010到VS2012只 ...

  7. jsp页面中的问题:Date cannot be resolved to a type

    问题如下:写了一个jsp,提示 症状原因:缺date的jar包 解决办法:在jsp开头导入jar包:<%@ page language="java" import=" ...

  8. 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

    准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...

  9. Linux下diff打补丁方法

    tar zxvf php-5.2.14.tar.gz gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1

  10. Win8 安装驱动

    从微软的网站上面下载了一些驱动,发现竟然没有Setup或者Install安装程序,囧. 快速查了一下,直接在inf文件右击的菜单里面选择“安装”即可.突然有点out的感觉. 参考:http://dig ...