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 ...
随机推荐
- css之cursor,float
鼠标形状: 在html中可以任意定义各个标签的显示形状,也可以此用来做些标签显示假像. <body> <p style="cursor: pointer"> ...
- ASP.NET MVC 中实现View与Controller分离
一.开篇题外话 我经常会在博客园逛来逛去,看过很多大牛们的Blog,我很少在这块技术天地活动,之前有发表过几篇日志,好像大部分是和电商有关,作为一个多年的开发人员,很少在这里分享,之前一直在CSDN上 ...
- 客户端TortoiseSVN的安装及使用方法
一.客户端TortoiseSVN的安装 运行TortoiseSVN程序,点击Next,下面的截图顺序即为安装步骤: 图1: 图2: 图3: 图4: 点击Finish按钮后会提示重启系统,其实不重启也没 ...
- Servlet Filter 2
10.Filter常见应用 )统一全站字符编码的过滤器 通过配置参数encoding指明使用何种字符编码,以处理Html Form请求参数的中文问题 案例:编写jsp 输入用户名,在Servlet中获 ...
- 【shell】while与until循环
while循环 #!/bin/bash i=1 s=0 while [ $i -le 100 ] do s=$(($s+$i)) ##变量运算 i=$(($i+1)) done echo " ...
- 关于双击事件.MouseEvent.DOUBLE_CLICK
as3提供了双击事件的调用,但有时候碰到双击事件无法响应,所以总结下原因.先摘录一段官方关于 doubleClick 事件发生的条件.如果 InteractiveObject 的 doubleClic ...
- 【Executor】配置ThreadPoolExecutor
来自为知笔记(Wiz) 附件列表
- Python 通过print_lol将数据保存到文件中
1. 定义一个print_lol函数来控制列表的缩进和写入位置 import sys """this is a new fuction, which work for a ...
- Linux命令之WC
$ wc story.txt39 237 1901 story.txt● Use -l for only line count● Use -w for only word count● Use -c ...
- golang的验证码相关的库
识别库 https://github.com/goghcrow/capture_easy 生成验证码的库 https://github.com/hanguofeng/gocaptcha 生成图片水印 ...