AreYouBusy

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

Total Submission(s): 3434 Accepted Submission(s): 1334

Problem Description

Happy New Term!

As having become a junior, xiaoA recognizes that there is not much time for her to AC problems, because there are some other things for her to do, which makes her nearly mad.

What’s more, her boss tells her that for some sets of duties, she must choose at least one job to do, but for some sets of things, she can only choose at most one to do, which is meaningless to the boss. And for others, she can do of her will. We just define the things that she can choose as “jobs”. A job takes time , and gives xiaoA some points of happiness (which means that she is always willing to do the jobs).So can you choose the best sets of them to give her the maximum points of happiness and also to be a good junior(which means that she should follow the boss’s advice)?

Input

There are several test cases, each test case begins with two integers n and T (0<=n,T<=100) , n sets of jobs for you to choose and T minutes for her to do them. Follows are n sets of description, each of which starts with two integers m and s (0m<=100), there are m jobs in this set , and the set type is s, (0 stands for the sets that should choose at least 1 job to do, 1 for the sets that should choose at most 1 , and 2 for the one you can choose freely).then m pairs of integers ci,gi follows (0<=ci,gi<=100), means the ith job cost ci minutes to finish and gi points of happiness can be gained by finishing it. One job can be done only once.

Output

One line for each test case contains the maximum points of happiness we can choose from all jobs .if she can’t finish what her boss want, just output -1 .

Sample Input

3 3

2 1

2 5

3 8

2 0

1 0

2 1

3 2

4 3

2 1

1 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

Sample Output

5

13

-1

-1

Author

hphp

Source

2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU

Recommend

zhouzeyong

混合背包

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm> using namespace std; typedef long long LL; typedef pair<int,int>p; const int INF = 0x3f3f3f3f; int Dp[110][110];//记录执行i个任务是不同时间所获得的最大快乐 int n,T; int m,s; int w[110],v[110]; int main()
{
while(~scanf("%d %d",&n,&T))
{
memset(Dp,-1,sizeof(Dp)); memset(Dp[0],0,sizeof(Dp[0])); for(int i=1; i<=n; i++)
{
scanf("%d %d",&m,&s);
for(int j=1; j<=m; j++)
{
scanf("%d %d",&v[j],&w[j]);
}
if(s==0)
{
for(int j=1; j<=m; j++)
{ for(int k=T; k>=v[j]; k--)
{
if(Dp[i][k-v[j]]!=-1)//这一状态是建立放一件物品的基础上,01背包形式,可以选多个物品
{
Dp[i][k]=max(Dp[i][k],Dp[i][k-v[j]]+w[j]);
}
if(Dp[i-1][k-v[j]]!=-1)//由上一状态转化而来,保证至少有一个
{
Dp[i][k]=max(Dp[i][k],Dp[i-1][k-v[j]]+w[j]);
}
}
}
}
else if(s==1)
{
for(int k=0; k<=T; k++)//将上一状态转移到这个状态
{
Dp[i][k]=Dp[i-1][k];
}
for(int j=1; j<=m; j++)
{
for(int k=T; k>=v[j];k--)
{
if(Dp[i-1][k-v[j]]!=-1)//至多一个
{
Dp[i][k]=max(Dp[i][k],Dp[i-1][k-v[j]]+w[j]);
}
}
}
}
else if(s==2)
{
for(int k=0; k<=T; k++)
{
Dp[i][k]=Dp[i-1][k];
}
for(int j=1;j<=m;j++)//01背包
{
for(int k=T;k>=v[j];k--)
{
if(Dp[i][k-v[j]]!=-1)
{
Dp[i][k]=max(Dp[i][k],Dp[i][k-v[j]]+w[j]);
}
}
} }
}
printf("%d\n",Dp[n][T]);
}
return 0;
}

AreYouBusy的更多相关文章

  1. hdu 3535 AreYouBusy 分组背包

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

  2. HDU 3535 AreYouBusy 经典混合背包

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

  3. HDU 3535 AreYouBusy(混合背包)

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

  4. AreYouBusy HDU - 3535 (dp)

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

  5. HDU 3535 AreYouBusy (混合背包)

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

  6. UESTC 424 AreYouBusy --混合背包

    混合三种背包问题. 定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值. 第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况.dp[i][k] = max(dp ...

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

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

  8. hdu 3535 AreYouBusy

    // 混合背包// xiaoA想尽量多花时间做ACM,但老板要求他在T时间内做完n堆工作,每个工作耗时ac[i][j],// 幸福感ag[i][j],每堆工作有m[i]个工作,每堆工作都有一个性质,/ ...

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

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

随机推荐

  1. jQuery 扩展功能

    源码如下: /*! * 说明:Jquery库扩展 * 创建时间: leo 2016/10/13 */ (function (window, jQuery, undefined) { jQuery.ex ...

  2. Leetcode: Guess Number Higher or Lower

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  3. win32 listbox

    real-time refresh: the scrollbar will jump when the listbox refresh change color: how to change the ...

  4. CCF真题之日期计算

    201509-2 日期计算 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2 ...

  5. html随笔

    <!DOCTYPE HTML> <html> <head> <meta charset = "utf-8"> <script ...

  6. java数组转化成集合

    package com.shb.web; import java.util.Arrays;import java.util.List; import com.sun.xml.internal.ws.u ...

  7. 16---Net基础加强

    更新中,敬请期待............ Xml介绍 xml读写练习 xml练习1 xml练习2

  8. 阿里 drds 分布式数据库分节点查询

    mybatis 模式下,xml 中写法 <select id="selectFailDetailOneNode" resultMap="BaseResultMap& ...

  9. sql 查看 锁定的表 或者 未提交 的事务

    --查看锁定的 表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sy ...

  10. PAT乙级 1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...