混合三种背包问题。

定义: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. StackOverflow Update: 560M Pageviews A Month, 25 Servers, And It's All About Performance

    http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and ...

  2. jQuery eislideshow 图片轮播

    在线实例 基础演示 自动播放 使用方法 <div id="ei-slider" class="ei-slider"> <ul class=&q ...

  3. [js开源组件开发]js手机联动选择日期 开源git

    js手机联动选择日期 这里在前面的<js手机联动选择地区>的基础上,改造数据源之后形成的一个日期的选择器,当然你可以使用之前的PC上模式的<日期控件>,它同时也支持手机端,ht ...

  4. JAVA书写规范

    java程序书写规范 命名规范    1.一般概念        1.尽量使用完整的英文描述符        2.采用适用于相关领域的术语        3.采用大小写混合使名字可读        4 ...

  5. [模仿][JS]新浪财经7*24直播

    使用新浪财经7*24直播的数据 简单的做一个山寨品 在线地址:[痛苦啊,有GFW,却没有vpn,往heroku上传浪费了好多时间...] http://wangxinsheng.herokuapp.c ...

  6. 安卓开发_慕课网_ViewPager实现Tab(App主界面)

    学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...

  7. 【读书笔记】iOS-NSData

    Cocoa为我们提供了NSData类,该类包装了大量字节,你可以获得数据的长度和指向字节起始位置的指针,因为NSData是一个对象,适用于常规的内存管理行为.因此,如果将数据块传递给一个函数或方法,可 ...

  8. iOS设计模式-单例模式

    (一)什么是单例模式(Singleton) 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 *最初的定义是在<设计模式>(Addison-Wesley)中 解读 1> ...

  9. 手动删除webapps下项目,导致Document base %TOMCAT_HOME%\webapps\XXX does not exist or is not a readable directory

    删除 %TOMCAT_HOME%\conf\XXX.xml , 再次eclipse中重新启动tomcat,错误就会消失.

  10. animation of android (2)

    android Interpolator 首先是android系统提供的变换方式: 这些方式将转载一篇文章: 转: http://www.cnblogs.com/mengdd/p/3346003.ht ...