混合三种背包问题。

定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值。

第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况。
dp[i][k] = max(dp[i][k],max(dp[i-1][k-c]+g,dp[i][k-c]))
其中:

dp[i][k]是不选当前项
dp[i-1][k-c]+g是表示第一次选这组的物品
dp[i][k-c]+g表示选择当前物品,并且不是第一次选。

第二类最多选一个,一旦选则是第一次选
dp[i][k] = max(dp[i][k],dp[i-1][k-c]+g);
注意全局最优解,需复制上一组解到这一组。

第三类,无限制,则跑一个01背包
dp[i][k] = max(dp[i][k],dp[i][k-c]+g)
注意仍需复制上一组解。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 10007 int dp[N][];
int c,g; int Max(int k1,int k2,int k3)
{
return max(max(k1,k2),k3);
} int main()
{
int n,T,i,j,k;
int m,s,set;
while(scanf("%d%d",&n,&T)!=EOF)
{
for(i=;i<=n;i++)
{
scanf("%d%d",&m,&s);
if(s == ) //至少选一项
{
for(j=;j<=T;j++)
dp[i][j] = -Mod;
for(j=;j<m;j++)
{
scanf("%d%d",&c,&g);
for(k=T;k>=;k--)
{
int t1 = dp[i][k]; //不选择此工作
int t2 = -Mod;
int t3 = -Mod;
if(k >= c)
{
t2 = dp[i-][k-c] + g; //第一次选此工作
t3 = dp[i][k-c] + g; //选择并且不是第一次选
}
dp[i][k] = Max(t1,t2,t3);
}
}
}
else if(s == ) //最多选一项
{
for(j=;j<=T;j++)
dp[i][j] = dp[i-][j]; //由上一堆推来
for(j=;j<m;j++)
{
scanf("%d%d",&c,&g);
for(k=T;k>=;k--)
{
int t1 = dp[i][k];
int t2 = -Mod;
if(k >= c)
t2 = dp[i-][k-c] + g;
dp[i][k] = max(t1,t2);
}
}
}
else if(s == ) //随便选
{
for(j=;j<=T;j++)
dp[i][j] = dp[i-][j];
for(j=;j<m;j++)
{
scanf("%d%d",&c,&g);
for(k=T;k>=c;k--)
{
dp[i][k] = max(dp[i][k],dp[i][k-c]+g);
}
}
}
}
printf("%d\n",max(dp[n][T],-));
}
return ;
}

UESTC 424 AreYouBusy --混合背包的更多相关文章

  1. HDU 3535 AreYouBusy(混合背包)

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

  2. HDU3535 AreYouBusy 混合背包

    题目大意 给出几组物品的体积和价值,每组分为三种:0.组内物品至少选一个:1.组内物品最多选一个:2.组内物品任意选.给出背包容量,求所能得到的最大价值. 注意 仔细审题,把样例好好看完了再答题,否则 ...

  3. HDU 3535 AreYouBusy (混合背包)

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

  4. HDU 3535 分组混合背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...

  5. Codevs 3269 混合背包(二进制优化)

    3269 混合背包 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 背包体积为V ,给出N个物品,每个物品占用体积为V ...

  6. codevs 3269 混合背包(复习混合背包)

    传送门 [题目大意]给出物品的数量.-1为无限个. [思路]混合背包.... [code] #include<iostream> #include<cstdio> #inclu ...

  7. [codevs3269]混合背包

    题目大意:一道混合背包模板. 解题思路:分三种情况讨论,01和完全没什么问题,多重背包需要把物品分成$\log W[i]$件,然后01即可,分成W[i]件01会TLE. 读优大法好! C++ Code ...

  8. CODE[VS] 3269 混合背包

    3269 混合背包  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 背包体积为V ,给出N ...

  9. POJ 1742 (单调队列优化多重背包+混合背包)

    (点击此处查看原题) 题意分析 给你n种不同价值的硬币,价值为val[1],val[2]...val[n],每种价值的硬币有num[1],num[2]...num[n]个,问使用这n种硬币可以凑齐[1 ...

随机推荐

  1. $(document).ready()即$()方法和window.onload方法的比较

    以浏览器装载文档为例,我们都知道在页面完毕后,浏览器会通过JavaScript为DOM元素添加事件.在常规的JavaScript代码中,通常使用window.onload方法,而在jQuery中,使用 ...

  2. .NET Core常用配置文件示例

    .NET Core相关地址: 1.官网:https://www.microsoft.com/net 2..NET Core:http://dotnet.github.io/3.Getting Star ...

  3. java微信开发框架wechat4j入门教程

    wechat4j What is wechat4j? wechat develop framework for java(微信开发框架JAVA版,最简单易用微信开发框架) wechat4j可以用来干什 ...

  4. CRM 2013 安装前系统和数据库的基础配置

    Win Serer 2012 域控安装参考:http://smallc.blog.51cto.com/926344/1034868  (其中最重要的几步:创建域控(ActiveDirectory域服务 ...

  5. andriod 动态显示当前时间

    <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android=&quo ...

  6. SharePoint Iframe 报错“此内容不能显示在一个框架中”<续>

    在之前的SharePoint站点iframe引用中,我们遇到过下面的问题,就是其它系统或者不通环境的SharePoint站点,引用SharePoint页面会报错“此内容不能显示在一个框架中”,之前我们 ...

  7. JAVA基础学习day19--IO流一、FileWrite与FileReader

    一.IO简述 1.1.简述 IO:input/output IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中. 1.2.结构 字节流抽象类: ...

  8. iOS 准确计算某个时间点距现在的时间差的代码 如"几分钟,几小时,几秒之前" ,

    利用时间戳来进行计算  ,需要给它一个时间: NSString *countTime = [self intervalSinceNow:@"2015-10-29 17:00:00" ...

  9. 提示“正尝试安装的adobe flash player不是最新版本”的解决方法

    尼玛,今天下午遇到一个比较奇怪的现象,我电脑的flash的不能正常使用了,我下载了一个重新安装了下,但还是不行.然后我又卸载了,重新安装flash,重启电脑,还是不行...而且在安装flash pla ...

  10. Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api。。扩展点

    Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api..扩展点 1. Api分类 WordPress APIs1 1.1. 1 函数分类2 1.2. 函数api ...