3269 混合背包
时间限制: 1 s
空间限制: 256000 KB
题目等级 : 钻石 Diamond
传送门
题目描述 Description
背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?
输入描述 Input Description
第一行两个数N,V,下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=-1表示数量无限
输出描述 Output Description
1个数Ans表示所装物品价值的最大值
样例输入 Sample Input
2 10
3 7 2
2 4 -1
样例输出 Sample Output
22
数据范围及提示 Data Size & Hint
对于100%的数据,V <= 200000 , N <= 200
分类标签 Tags
动态规划 背包型DP 线性结构 队列

/*
二进制拆01背包.
*/
#include<iostream>
using namespace std;
int i,n,k,l;
int v[201],w[201],m[201],vz[20001],wz[20001],f[200001],tot;
void yh()//二进制优化
{
for(int i=1;i<=n;i++){if(m[i]>1){for(int j=1;j<=m[i];j<<=1){vz[++tot]=v[i]*j;wz[tot]=w[i]*j;m[i]-=j;
}
if(m[i])
{
vz[++tot]=v[i]*m[i];
wz[tot]=w[i]*m[i];
}}
}
}
int main()
{
int V;
cin>>n>>V;
for(i=1;i<=n;++i)
{
cin>>v[i]>>w[i]>>m[i];
}
yh();
for(i=1;i<=n;++i)
{
if(m[i]==-1)
{
for(int j=v[i];j<=V;++j)f[j]=max(f[j],f[j-v[i]]+w[i]);
}
}
for(int i=1;i<=tot;i++)
{
for(int j=V;j>=vz[i];j--)
{
f[j]=max(f[j],f[j-vz[i]]+wz[i]);
}
}
cout<<f[V];
return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/6070817.html

Codevs 3269 混合背包(二进制优化)相关推荐

  1. Codevs 3269 混合背包

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

  2. hdu-2844 Coins (混合背包+二进制优化)

    HDU链接 文章目录 题目描述: 题意: 题解 (代码) 题目描述: 输入描述: 输出描述: For each test case output the answer on a single line ...

  3. CODEVS 3269 混合背包

    一道裸的混合背包题目.可是忘记了去重一直TLE,就是假设体积<=全然背包的01.和多重背包都要被全然背包代替,由于他的数量没限制所以用起来更方便. 题目连接:http://codevs.cn/p ...

  4. WikiOI 3269 混合背包 (动规+多重背包优化)

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

  5. 旅行商的背包(二进制优化多重+0/1背包枚举体积))

    旅行商的背包(二进制优化多重+0/1背包枚举体积)) 题目描述 小 S 坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有 n n n 种, ...

  6. [多重背包+二进制优化]HDU1059 Dividing

    题目链接 题目大意: 两个人要把一堆宝珠,在不能切割的情况下按照价值平分,他们把宝珠分成6种价值,每种价值的宝珠n个. n<=200000 思考: 首先如果加和下来的价值是一个偶数 那么还分毛啊 ...

  7. P1833 樱花——混合背包 二进制优化成01背包

    P1833樱花 题目大意:有n颗樱花树,你的总时间为T,现在n课树,每次观看要花费w时间,能获取v点价值,最多能参观s次,如果s等于0,则可以观看无限次,问你在T时间内 获得的最大价值是多少. 思路: ...

  8. POJ 1014 Dividing【多重背包+二进制优化】

    大意: 价值1, 2, 3, --, 6的物品分别a1, a2, --, a5, a6件 问能否把这些物品分成两份,使其具有相同的价值(所有物品必须全部用上) 分析: 给个物品有多件,即多重背包 只要 ...

  9. zcmu-1919: kirito(多重背包——二进制优化)

    Description 主角kirito是使用世界首款完全潜行游戏"刀剑神域(Sword Art Online)"的玩家.曾经很幸运的参与过封闭测试,并买下正式版的kirito,正 ...

最新文章

  1. js学习笔记——在html中嵌入脚本
  2. Hadoop文件系统常用命令
  3. haproxy中acl的与或非三种規則写法
  4. springboot 配置DRUID数据源
  5. 递归 算例一(求一个简单嵌套字典的深度)
  6. 分布式MySQL数据库TDSQL架构分析
  7. 零基础学Java需知:Java小白入门解疑大全
  8. 从工作实践中积累Linux常用脚本(一)
  9. extjs6 mvvm_ZK 6中的MVVM初探
  10. new 3ds右摇杆测试软件,电击杂志编辑新3DS评测:防抖3D效果拔群!
  11. SpringBoot自动配置原理流程
  12. 教你手工检测SQL注入
  13. Java中List.forEach()方法使用
  14. protubuffer for windows配置指南!
  15. 苹果carplay下载_苹果宣布推出CarPlay
  16. 学习技术的三部曲:WHAT、HOW、WHY【转】
  17. 常见服务器默认管理口地址
  18. 应届生如何做好一份简历?
  19. 既然心动,那就赶快行动吧!
  20. python制作相册_《自拍教程73》Python 自动生成相册文件夹

热门文章

  1. java+classpath的理解_Java配置path和classpath的含义详解-Go语言中文社区
  2. 第一届佳木斯大学程序设计校赛题解
  3. C语言文件拷贝-四种方式
  4. elementos php开发,PHPWord
  5. Linux中yum不能用的原因
  6. [神经网络]什么叫神经网络
  7. 1.3 Shell脚本编程基础之条件测试
  8. saltstack系列~第四篇
  9. HTTP缓存策略 304
  10. sql2008性能计数器注册表配置单元一致性失败