hdu 3535 AreYouBusy
// 混合背包
// xiaoA想尽量多花时间做ACM,但老板要求他在T时间内做完n堆工作,每个工作耗时ac[i][j],
// 幸福感ag[i][j],每堆工作有m[i]个工作,每堆工作都有一个性质,
// 0表示至少要做里面的1个工作,
// 1表示最多做里面的1个工作,
// 2表示随意,做或不做都行。最后问在符合老板要求的情况下的最大幸福感,怎么都不符合要求就输出-1. // 0 可以看 hdu 3033 I love sneakers!
// 1,2 情况就是普通背包了 #include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 110
int dp[maxn],dp_num[maxn],dpy[maxn];
int ac[maxn][maxn],ag[maxn][maxn];
int zero[maxn],one[maxn],two[maxn];
int main()
{
int n,T;
int m[maxn],s;
int num0,num1,num2;
int i,j,k;
while(scanf("%d %d",&n,&T)!=EOF){
num0=num1=num2=;
for(i=;i<=n;i++){
scanf("%d %d",&m[i],&s);
switch(s)
{
case :zero[num0++]=i;break;
case :one[num1++]=i;break;
case :two[num2++]=i;break;
}
for(j=;j<=m[i];j++)
scanf("%d %d",&ac[i][j],&ag[i][j]);
}
int num;
memset(dp,,sizeof(dp));
memset(dp_num,,sizeof(dp_num));
memset(dpy,,sizeof(dpy));
for(num=;num<num0;num++)
{
i=zero[num];
for(j=;j<=m[i];j++){
for(k=T;k>=ac[i][j];k--){
if(dpy[k]<dp[k-ac[i][j]]+ag[i][j]&&dp_num[k-ac[i][j]]>=num){
dpy[k]=dp[k-ac[i][j]]+ag[i][j];
dp_num[k]=num+;
} else if(dp_num[k]==num&&dp_num[k-ac[i][j]]==num){
dpy[k]=dp[k-ac[i][j]]+ag[i][j];
dp_num[k]=num+;
}
}
for(k=;k<=T;k++)
if(dpy[k]>dp[k])
dp[k]=dpy[k];
}
for(j=;j<=T;j++)
dp[j]=dpy[j];
}
num=;
for(j=;j<=T;j++)
if(dp_num[j]!=num0)
dpy[j]=dp[j]=-,num++;
// else
// printf("\n%d %d ]",j,dp[j]); if(num==T+){printf("-1\n");continue;}//
for(num=;num<num1;num++)
{
i=one[num];
for(j=;j<=m[i];j++)
for(k=T;k>=ac[i][j];k--)
if(dp[k-ac[i][j]]>-)
dpy[k]=max(dpy[k],dp[k-ac[i][j]]+ag[i][j]);
for(j=;j<=T;j++)
dp[j]=dpy[j];
}
// for(i=0;i<=T;i++) printf("\n %d %d ]",i,dpy[i]);
for(num=;num<num2;num++)
{
i=two[num];
for(j=;j<=m[i];j++)
for(k=T;k>=ac[i][j];k--)
if(dp[k-ac[i][j]]>-)
dp[k]=max(dp[k],dp[k-ac[i][j]]+ag[i][j]);
}
printf("%d\n",dp[T]);
} return ;
}
hdu 3535 AreYouBusy的更多相关文章
- 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 (动态规划 混合背包 值得做很多遍)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n个任务集合,需要在T个时间单位内完成.每个任务集合有属性,属性为0的代表至少要完成1个 ...
- HDU 3535 AreYouBusy 经典混合背包
AreYouBusy Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Su ...
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- HDU 3535 AreYouBusy (混合背包之分组背包)
题目链接 Problem Description Happy New Term! As having become a junior, xiaoA recognizes that there is n ...
- AreYouBusy HDU - 3535 (dp)
AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU - 3535:AreYouBusy (分组背包)
题意:给你n个工作集合,给你T的时间去做它们.给你m和s,说明这个工作集合有m件事可以做,它们是s类的工作集合(s=0,1,2,s=0说明这m件事中最少得做一件,s=1说明这m件事中最多只能做一件,s ...
- HDU 3535 分组混合背包
http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...
随机推荐
- OWASP
开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个组织,它提供有关计算机和互联网应用程序的公正.实际.有成本效益的信息.其目的 ...
- C#中Hashtable容器的了解与使用
初涉Hashtable寄语 由于近段时间培训内容涉及到Hashtable方面的知识,由于培训仅仅起到一个引导的作用,加之以前又接触得少,因此对Hashtable这个东东蛮陌生,呵呵,今晚木有事儿就一起 ...
- 【Unity3D】iOS 推送实现
原地址:http://www.iappfan.com/%E3%80%90unity3d%E3%80%91ios-%E6%8E%A8%E9%80%81%E5%AE%9E%E7%8E%B0/ #impor ...
- NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1)
NGINX的奇淫技巧 —— 6. IF实现数学比较功能 (1) ARGUS 1月13日 发布 推荐 0 推荐 收藏 3 收藏,839 浏览 nginx的if支持=.!= 逻辑比较, 但不支持if中 & ...
- HTTP/2 对 Web 性能的影响(上)
一.前言 HTTP/2 于 2015 年 5 月正式推出.自诞生以来,它就一直在影响着网络性能最佳实践.在本篇文章中,我们将讨论 HTTP/2 的二进制帧.延迟削减.潜在利弊以及相应的应对措施. 超文 ...
- UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)
题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...
- 一个很好的php分词类库
PHPAnalysis源程序下载与演示: PHP分词系统 V2.0 版下载 | PHP分词系统演示 | PHPAnalysis类API文档 原文连接地址:http://www.phpbone.co ...
- Spark安装部署
原创文章,转载请注明: 转载自www.cnblogs.com/tovin/p/3820979.html 一.系统环境配置 参照http://www.cnblogs.com/tovin/p/381890 ...
- Python中Lambda, filter, reduce and map 的区别
Lambda, filter, reduce and map Lambda Operator Some like it, others hate it and many are afraid of t ...
- 【Linux高频命令专题(19)】vi/vim
概述 其实在Linux中一切命令或者软件都是文件,所以把vi/vim作为高频命令专题之一,也没什么不妥.虽然大家都称之为编辑器~~ vim是vi的高级版本,比如有代码高亮,也就是说可以把vim定位为程 ...