HDU 3535 分组混合背包
http://acm.hdu.edu.cn/showproblem.php?pid=3535
题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件,2时随意,每项工作的描述是花费的时间和获得的快乐值,求在T时间内可获的最大快乐值。
memset放错位置了,折腾老半天。
分组混合背包,有的取一件或不取,有的随意,有的最少一个
分三种情况讨论
s==0 考虑前面取过时这次取或不取,前一组取过时这次取或不取
s==1 考虑前一组取过时这次取或不取
s==2 考虑前面取过时这次取或不取
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,t,m,s;
int time[],happy[],dp[][];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,k;
while(cin>>n>>t)
{
memset(dp,-,sizeof(dp));
memset(dp[],,sizeof(dp[]));
for(i=;i<=n;i++)
{
scanf("%d %d",&m,&s);
for(j=;j<m;j++)
{
scanf("%d%d",&time[j],&happy[j]);
}
if(s==)
{
for(k=;k<m;k++)
{
for(j=t;j>=time[k];j--)
{
if(dp[i][j-time[k]]!=-)
dp[i][j]=max(dp[i][j],dp[i][j-time[k]]+happy[k]);
if(dp[i-][j-time[k]]!=-)
dp[i][j]=max(dp[i][j],dp[i-][j-time[k]]+happy[k]);
}
}
}
else if(s==)
{
for(j=;j<=t;j++)
dp[i][j]=dp[i-][j];
for(k=;k<m;k++)
{
for(j=t;j>=time[k];j--)
{
if(dp[i-][j-time[k]]!=-)
dp[i][j]=max(dp[i][j],dp[i-][j-time[k]]+happy[k]);
}
}
}
else
{
for(j=;j<=t;j++)
dp[i][j]=dp[i-][j];
for(k=;k<m;k++)
{
for(j=t;j>=time[k];j--)
{
if(dp[i][j-time[k]]!=-)
dp[i][j]=max(dp[i][j],dp[i][j-time[k]]+happy[k]);
}
}
}
}
printf("%d\n",dp[n][t]);
}
return ;
}
HDU 3535 分组混合背包的更多相关文章
- HDU 3535 AreYouBusy(混合背包)
HDU3535 AreYouBusy(混合背包) http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意: 给你n个工作集合,给你T的时间去做它们.给你m和 ...
- 背包系列 hdu 3535 分组背包
题意: 有n组工作,现在有T分钟时间去做一些工作.每组工作里有m个工作,并且类型为s,s类型可以为0,1,2,分别表示至少选择该组工作的一项,至多选择该工作的一项,不限制选择.每个工作有ci,gi两个 ...
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- hdu 3535 AreYouBusy
// 混合背包// xiaoA想尽量多花时间做ACM,但老板要求他在T时间内做完n堆工作,每个工作耗时ac[i][j],// 幸福感ag[i][j],每堆工作有m[i]个工作,每堆工作都有一个性质,/ ...
- HDU3535 AreYouBusy 混合背包
题目大意 给出几组物品的体积和价值,每组分为三种:0.组内物品至少选一个:1.组内物品最多选一个:2.组内物品任意选.给出背包容量,求所能得到的最大价值. 注意 仔细审题,把样例好好看完了再答题,否则 ...
- Codevs 3269 混合背包(二进制优化)
3269 混合背包 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 背包体积为V ,给出N个物品,每个物品占用体积为V ...
- hdu 2546 典型01背包
分析:每种菜仅仅可以购买一次,但是低于5元不可消费,求剩余金额的最小值问题..其实也就是最接近5元(>=5)时, 购买还没有买过的蔡中最大值问题,当然还有一些临界情况 1.当余额充足时,可以随意 ...
- HDU 3127 WHUgirls(完全背包)
HDU 3127 WHUgirls(完全背包) http://acm.hdu.edu.cn/showproblem.php? pid=3127 题意: 如今有一块X*Y的矩形布条, 然后有n种规格的x ...
- codevs 3269 混合背包(复习混合背包)
传送门 [题目大意]给出物品的数量.-1为无限个. [思路]混合背包.... [code] #include<iostream> #include<cstdio> #inclu ...
随机推荐
- centos 查看cpu个数、核数
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...
- ubuntu-E:Encountered a section with no Package: header的解决办法 (转)
E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.arch ...
- thinkphp笔记
1.load('@.function') 临时性加载 指的是Common文件下的 function 如 function select(){} , locad中的function实际指的就是 com ...
- xcopy
xcopy "$(ProjectDir)Admin" "$(SolutionDir)模块\CanDoo.Admin.WebHost\Admin" /e/h ...
- composer错误收集
1. Problem 1 - The requested package ** is satisfiable by ** but these conflict with your requiremen ...
- [c#]获取exchange中的图片
摘要 在exchange 2007或者2010中获取的邮件内容为html标签格式,也就是一个页面.如果里面含有img标签,你会发现img标签的src属性为cid:xxxxxxxxxxxx的一串字符串, ...
- 配置lamp中的apache
root@komiles-VirtualBox:/etc/apache2/sites-available# service apache2 restart * Restarting web serve ...
- CF456B Fedya and Maths 找规律
http://codeforces.com/contest/456/problem/B CF#260 div2 B Fedya and Maths Codeforces Round #260 B. F ...
- 使用DOS比较两个txt文件的差异
将两个文件放入到同一个文件夹下 DOS下提供了FC命令 点击开始->运行->输入cmd,进入DOS下,进入指定目录,输入FC a.txt b.txt进行比较,下面会显示出之间的差异
- JAVA浅析字节流与字符流
[概括] 字节流是通用的,既可以操作图片又可以操作文本,但一般都用于操作图片.字符流是基于字节流的,因为字符流内部融合编码表,所以用来操作文本. 1.在字节输入流中能根据文件的大小来开辟数组空间 Fi ...