POJ 1014 Dividing【多重背包+二进制优化】
大意:
价值1, 2, 3, ……, 6的物品分别a1, a2, ……, a5, a6件
问能否把这些物品分成两份,使其具有相同的价值(所有物品必须全部用上)
分析:
给个物品有多件,即多重背包
只要看能不能将这些物品拼成 总价值 的 一半就可以了
转化为01背包是用二进制优化,否则会超时
代码:
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 6 const int maxn = 20005 * 6; 7 8 int n, all; 9 int vo[maxn]; 10 int dp[maxn]; 11 bool solve() { 12 if(all % 2 == 1) return false; 13 all /= 2; 14 memset(dp, 0, sizeof(dp)); 15 for(int i = 1; i <= n; i++) { 16 if(vo[i] > all) return false; 17 for(int j = all; j >= vo[i]; j--) { 18 dp[j] = max(dp[j], dp[j - vo[i]] + vo[i]); 19 } 20 } 21 if(dp[all] != all) return false; 22 return true; 23 } 24 25 int main() { 26 int a[10]; 27 int kase = 1; 28 while(scanf("%d %d %d %d %d %d",&a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) ) { 29 all = 0; 30 for(int i = 1; i <= 6; i++) { 31 all += a[i] * i; 32 } 33 if(all == 0) break; 34 n = 1; 35 for(int i = 1; i <= 6; i++) { 36 for(int k = 1; k <= a[i]; k *= 2) { 37 vo[n++] = k * i; 38 a[i] -= k; 39 } 40 if(a[i]) vo[n++] = a[i] * i; 41 } 42 n--; 43 printf("Collection #%d:\n", kase++); 44 puts(solve() ? "Can be divided." : "Can't be divided."); 45 puts(""); 46 } 47 return 0; 48 }
View Code
转载于:https://www.cnblogs.com/zhanzhao/p/3942748.html
POJ 1014 Dividing【多重背包+二进制优化】相关推荐
- [多重背包+二进制优化]HDU1059 Dividing
题目链接 题目大意: 两个人要把一堆宝珠,在不能切割的情况下按照价值平分,他们把宝珠分成6种价值,每种价值的宝珠n个. n<=200000 思考: 首先如果加和下来的价值是一个偶数 那么还分毛啊 ...
- Dividing(多重背包二进制优化)
题意:有价值为1-6的六种玻璃球,现在告诉你各种玻璃球的个数,问能否将这些玻璃球分成两份,使得两份的总价值相等 既然要等分,那么总价值必定是偶数,所以价值和为奇数是无法等分. 但价值和为偶数时,我们可 ...
- zcmu-1919: kirito(多重背包——二进制优化)
Description 主角kirito是使用世界首款完全潜行游戏"刀剑神域(Sword Art Online)"的玩家.曾经很幸运的参与过封闭测试,并买下正式版的kirito,正 ...
- HDU 5445 Food Problem 多重背包+二进制优化
据说也可以用单调队列优化多重背包,但是我不会,所以还是选择了二进制优化... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:先给n,m, ...
- 12.14补卡,多重背包二进制优化
题目链接:22背包专题 [Cloned] - Virtual Judge (vjudge.net) 思路:多重背包的主要思路就是把每一个物品分开放,从而达到每个物品拿与不拿全部遍历到.但是当物品数量过 ...
- hdu2844 Coins(普通的多重背包 + 二进制优化)
看完背包九讲的多重背包之后,这题目应该可以轻松做出来了 模型: 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的 ...
- ZCMU-1919 kirito's 星爆气流斩(多重背包+二进制优化)
Problem C: kirito's 星爆气流斩 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 148 Solved: 37 [Submit][S ...
- ZCMU 1919: kirito's 星爆气流斩(多重背包+二进制优化)
1919: kirito's 星爆气流斩 Time Limit: 2 Sec Memory Limit: 128 MB Description 主角kirito是使用世界首款完全潜行游戏" ...
- hdu 2191 (多重背包二进制优化)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 实现代码: #include<bits/stdc++.h> using namespac ...
最新文章
- 互联网笔试各种主流语言在OJ上的的标准输入输出
- 开源游戏机java模拟器_最棒的 7 款开源终端模拟器
- “AI开发者大会”早鸟票抢购倒计时开始~
- RabbitMQ 消息确认机制confirm代码编写
- GDCM:gdcm::Image的测试程序
- Qt界面美化 QSS
- libsvm3.22——使用指南
- 教育计算机缩写,{教育管理}计算机缩写术语完全介绍宝典.docx
- django mysql port,Django使用MySql数据库
- 计算机上找不到运行程序怎么办,电脑联网时显示找不到应用程序怎么办
- 【转】PLC编程软件: KW multiprog 和 codesys
- 蓝桥杯练习1:等差素数列
- wordpress相册_如何在WordPress中使用相册创建相册
- Linux系统中dmesg命令使用详解
- 还记得最初的九九乘法表吗?
- 企业邮箱邮件的服务器地址是什么?企业邮箱服务器出错怎么办?
- 教你怎么解决Linux依赖包第一篇:pkgs.org资源网下载
- matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例
- 从普通回溯到三色标记法法
- [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本
热门文章
- 申通快递机器人上岗_【峰暴】618, 数万台机器人上岗为您服务!
- hadoop2.9.2安装hadoop_pid_dir_Hadoop3.2 +Spark3.0全分布式安装
- python库怎么绘画_python中的turtle库(图形绘画库)
- android内存溢出错误,Android Studio 生成 JavaDoc 空指针异常|文档编码出错|内存溢出...
- qprocess start怎么判断是否结束_致恋爱中的我们,怎么样来判断一个女人是否在骗你?...
- 运算符重载 返回类型说明符后加_Python3基础:从独特的角度看运算符重载
- 时分多路复用(Time Division Multiplexing,TDM)
- 原生html如何发送网络请求,原生JS向服务器发送GET请求
- java 选择排序入门
- 全文搜索引擎 Elasticsearch 入门概念