HDU 3535 AreYouBusy 经典混合背包
AreYouBusy
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 1 Accepted Submission(s) : 1
3 4 2 1 2 5 3 8 2 0 1 1 2 8 3 2 4 4 2 1 1 1
1 1 1 0 2 1
5 3 2 0 1 0 2 1 2 0 2 2 1 1 2 0 3 2 2 1 2 1 1 5 2 8 3 2 3 8 4 9 5 10
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define INF 1<<29
int n, m, sum, g;
int w[],p[];
int dp[],tmp[];
int main()
{
int i, j, x;
while(~scanf("%d%d",&n,&sum))//输入总共有多少种,以及这个人的背包体积是多少
{
memset(dp,,sizeof(dp));//初始化
for(i=;i<=n;i++)
{
scanf("%d%d",&m,&g);//输入物品的种类,以及物品的个数
for(x=;x<=m;x++)
scanf("%d%d",&w[x],&p[x]);//输入这种物品的体积以及价值
if(g==)//至少选择一个的
{
for(j=;j<=sum;j++)
{
tmp[j]=dp[j];
dp[j]=-INF;
}//对每一个都进行初始化
for(x=;x<=m;x++)
for(j=sum;j>=w[x];j--)
dp[j]=max(dp[j],max(dp[j-w[x]]+p[x],tmp[j-w[x]]+p[x]));
}
else if(g==)
{
for(j=;j<=sum;j++) //当前组初始化
tmp[j]=dp[j];
for(x=;x<=m;x++)
for(j=sum;j>=w[x];j--)
dp[j]=max(dp[j],tmp[j-w[x]]+p[x]);//拿一个临时数组确保每个状态最多选择了一个
}
else if(g==)
{
for(j=;j<=sum;j++) //当前组初始化
tmp[j]=dp[j];
for(x=;x<=m;x++)
for(j=sum;j>=w[x];j--)
dp[j]=max(dp[j],dp[j-w[x]]+p[x]);
}//普通背包 }
dp[sum]=max(dp[sum],-); //没有完成任务的值都为负的,做输出调整,输出-1
printf("%d\n",dp[sum]);
}
return ;
}
HDU 3535 AreYouBusy 经典混合背包的更多相关文章
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- [HDU 3535] AreYouBusy (动态规划 混合背包 值得做很多遍)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...
- HDU 3535 AreYouBusy (混合背包之分组背包)
题目链接 Problem Description Happy New Term! As having become a junior, xiaoA recognizes that there is n ...
- HDU 3535 AreYouBusy(混合背包)
HDU3535 AreYouBusy(混合背包) http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意: 给你n个工作集合,给你T的时间去做它们.给你m和 ...
- hdu 3535 AreYouBusy
// 混合背包// xiaoA想尽量多花时间做ACM,但老板要求他在T时间内做完n堆工作,每个工作耗时ac[i][j],// 幸福感ag[i][j],每堆工作有m[i]个工作,每堆工作都有一个性质,/ ...
- hdu 3535 AreYouBusy 分组背包
AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- hdu 2602(经典01背包)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU 3535 分组混合背包
http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...
- HDU3535 AreYouBusy 混合背包
题目大意 给出几组物品的体积和价值,每组分为三种:0.组内物品至少选一个:1.组内物品最多选一个:2.组内物品任意选.给出背包容量,求所能得到的最大价值. 注意 仔细审题,把样例好好看完了再答题,否则 ...
随机推荐
- Oracle和MySQL的高可用方案对比【转】
关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...
- Django 基于类的视图(CBV)执行流程 CBV 源码分析
一.CBV(基于类的视图) 视图是可以调用的,它接受请求并返回响应,这不仅仅是一个函数,Django提供了一些可以用作视图的类的例子,这些允许您通过继承或mixin来构建视图并重用代码. 基本示例 D ...
- RabbitMQ--Publish/Subscribe(五)
上篇文章中,我们实现了不同consumer接收不同级别的日志,这篇文章中,不以日志级别,使用不同日志来源.比如kernel.*.*.critical. 这就要使用topic exchange完成了.将 ...
- 孤的Scrapy官文阅读进程
上月底开始学习Scrapy爬虫框架,看了一些中文文档,讲应用.讲基础的,对其有一些了解了.终于在28日打开Scrapy的官网,并制作了其文档的思维导图,进而开启了其文档的阅读之旅. 本文展示了从6月2 ...
- Oracle 函数 “把当前的用户(审核人,审核通过后)插入到数据表中”
create or replace function mcode_apply_update_personnel(p_mca_no VARCHAR2, -- 参数(实参) p_action VARCHA ...
- 【Netty官方文档翻译】引用计数对象(reference counted objects)
知乎有关于引用计数和垃圾回收GC两种方式的详细讲解 https://www.zhihu.com/question/21539353 原文出处:http://netty.io/wiki/referenc ...
- thinkphp调试
Sql调试
- C++11之auto和decltype
auto自动类型推断,用于从初始表达式中推断出变量的类型. auto a;// 错误,没有初始化表达式,无法推断出a的类型 autoint a =10;// 错误,auto临时变量的语义在C++ 11 ...
- new[] 到底做了什么?
#include<iostream> #include<cstdlib> using std::cout; using std::endl; using std::hex; c ...
- Hive与HBase区别 大墨垂杨
大墨垂杨 http://www.cnblogs.com/quchunhui/p/5340989.html