题意:

求一种划分方案使结果最公平。

思路:

多重背包,然后把物品分为 2^0, 2^1, ... , 2^k,... 等。

#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 20010 * 3;
int dp[maxn];void zero1pack(int w, int value, int vol)
{for (int v = vol; v >= w; --v)dp[v] = max(dp[v], dp[v - w] + value);
}int main()
{int cases = 0;while (++cases){int arr[10], flag = 0, vol = 0;for (int i = 1; i <= 6; ++i){scanf("%d", &arr[i]);flag |= arr[i];vol += arr[i] * i;}if (flag == 0)break ;if (vol & 0x01){printf("Collection #%d:\nCan't be divided.\n\n", cases);continue;}memset(dp, 0, sizeof(dp));for (int i = 1; i <= 6; ++i){int v = 1;while (v <= arr[i]){zero1pack(v * i, v * i, vol >> 1);arr[i] -= v;v <<= 1;}if (arr[i])zero1pack(arr[i] * i, arr[i] * i, vol >> 1);}if (dp[vol >> 1] == vol >> 1)printf("Collection #%d:\nCan be divided.\n\n", cases);elseprintf("Collection #%d:\nCan't be divided.\n\n", cases);}return 0;
}

转载于:https://www.cnblogs.com/kedebug/archive/2013/02/05/2893540.html

POJ 1014 Dividing(多重背包 + 倍增优化)相关推荐

  1. Dividing 多重背包 倍增DP

    Dividing 给出n个物品的价值和数量,问是否能够平分. 1 #include <iostream> 2 #include <cstring> 3 #include < ...

  2. 【POJ】 1014 Dividing(多重背包,优化)

    [POJ] 1014 Dividing(多重背包,优化) [题目链接]http://poj.org/problem?id=1014 题目 Description Marsha and Bill own ...

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

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

  4. 【学习笔记】多重背包相关优化——二进制优化/单调队列优化

    多重背包--二进制优化/单调队列优化 二进制优化 单调队列优化 代码都是 POJ1742 的,注意,那道题二进制优化会超时. 普通的多重背包式子,物品个数限制:c[i]c[i]c[i],单个物品价值 ...

  5. (step3.3) hdu 1059(Dividing——多重背包)

    题目大意:分别给出价值为1~6的石头的数量.问能否将这些石头等价值平分... 解题思路:多重背包 1)多重背包的典型描述是这样的:给出n种物品,背包的容量为V.每种物品的可用数量为num[i],所占体 ...

  6. [poj 1014]Dividing的DFS解法解读和DP解法

    转载来源: http://blog.csdn.net/lyy289065406/article/details/6661449 这道题比较特殊,用DFS也是对的,而且可以进行优化,即使直接n[i]-- ...

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

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

  8. Dividing(多重背包二进制优化)

    题意:有价值为1-6的六种玻璃球,现在告诉你各种玻璃球的个数,问能否将这些玻璃球分成两份,使得两份的总价值相等 既然要等分,那么总价值必定是偶数,所以价值和为奇数是无法等分. 但价值和为偶数时,我们可 ...

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

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

最新文章

  1. 算法实现太难了?机器学习也需要开源软件
  2. CNN阴影去除--DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal
  3. 动画学院动漫节,周末预定!
  4. 川教版计算机三年级下册教案,川教版小学三年级下册信息技术教案(全册)
  5. vba定义全局变量并赋值_利用VBA代码如何打开任意程序
  6. nginx模块_使用gdb调试nginx源码
  7. not null primary key什么意思_explain都不会用,你还好意思说精通Mysql查询优化?
  8. openshift_在OpenShift上托管的WildFly实例上进行Arquillian测试
  9. 前端工具安装和运行相关
  10. yum rpm apt-get wget 辨析
  11. android activity启动模式_Android知识点【Activity】清单文件
  12. 【前端】相信你会用到的一篇笔记---HTML篇
  13. 设计教务管理系统MySQL,数据库设计实例 教务管理系统
  14. 三、Snapman多人协作电子表格之——软件的基本功能
  15. 运营商劫持是什么、运营商DNS网络劫持如何解决
  16. android弹球动画,FlingAnimation/SpringAnimation实现弹球动画
  17. QT动态加载DLL包括加载DLL中的类及其成员函数
  18. U盘无法格式化的原因及解决方法
  19. 什么是云中台系统_什么是云中的超融合?
  20. Teambition X 2019 校招

热门文章

  1. XP系统下建立WIFI热点让手机、电脑能上网
  2. Aristochart – 灵活的 HTML5 Canvas 折线图
  3. JavaScript那些事儿(1):对比JavaScript和jQuery的Dom操作
  4. 关于PageRank的一些见解
  5. lenovo 一键恢复6.0 NOVO下密码遗忘的解决方案
  6. TypeScript--泛型
  7. SVM 推到期间 遇到的 表背景知识 (间隔最大化)
  8. net start mysql 发生系统错误 5。 拒绝访问。
  9. warning: incompatible implicit declaration of built-in function ‘exit’
  10. 关于项目中的日期提交