POJ 1014 Dividing 多重背包
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 63980 | Accepted: 16591 |
Description
Input
The last line of the input file will be "0 0 0 0 0 0"; do not process this line.
Output
Output a blank line after each test case.
Sample Input
1 0 1 2 0 0
1 0 0 0 1 1
0 0 0 0 0 0
Sample Output
Collection #1:
Can't be divided. Collection #2:
Can be divided.
Source
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int sum;
int num[7], dp[60000 + 60];
template<class T > inline T getMax(const T &a, const T &b)
{
return a > b ? a : b;
} void ZeroOnePack(int cost, int weight, int V)
{
for (int i = V; i >= cost; i--) {
dp[i] = getMax(dp[i], dp[i - cost] + weight);
}
} void CompletePack(int cost, int weight, int V)
{
for (int i = cost; i <= V; i++) {
dp[i] = getMax(dp[i], dp[i - cost] + weight);
}
} void MultiPack(int cost, int weight, int V, int amount)
{
if (cost * amount >= V) {
CompletePack(cost, weight, V);
return;
}
int k = 1;
while (k < amount) {
ZeroOnePack(cost * k, weight * k, V);
amount -= k;
k *= 2;
}
ZeroOnePack(cost * amount, weight * amount, V);
} int main()
{
int t = 1;
while (~scanf("%d", &num[1])) {
sum = num[1];
for (int i = 2; i <= 6; i++) {
scanf("%d", &num[i]);
sum += num[i] * i;
}
if (num[1] + num[2] + num[3] + num[4] + num[5] + num[6] == 0) break;
printf("Collection #%d:\n", t++);
if (sum % 2) {
puts("Can't be divided.\n");
continue;
}
sum >>= 1;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= 6; i++) {
MultiPack(i, i, sum, num[i]);
}
if (dp[sum] != sum) {
puts("Can't be divided.\n");
} else
puts("Can be divided.\n");
}
return 0;
}
POJ 1014 Dividing 多重背包的更多相关文章
- Hdu 1059 Dividing & Zoj 1149 & poj 1014 Dividing(多重背包)
多重背包模板- #include <stdio.h> #include <string.h> int a[7]; int f[100005]; int v, k; void Z ...
- POJ 1014 Dividing(多重背包, 倍增优化)
Q: 倍增优化后, 还是有重复的元素, 怎么办 A: 假定重复的元素比较少, 不用考虑 Description Marsha and Bill own a collection of marbles. ...
- POJ 1014 Dividing (多重可行性背包)
题意 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两份的总价值相等,其中一个物品不能切开,只能分给其中的某一方,当输入六个0是( ...
- POJ 1014 Dividing(多重背包+二进制优化)
http://poj.org/problem?id=1014 题意:6个物品,每个物品都有其价值和数量,判断是否能价值平分. 思路: 多重背包.利用二进制来转化成0-1背包求解. #include&l ...
- POJ 1014 Dividing(多重背包)
Dividing Description Marsha and Bill own a collection of marbles. They want to split the collectio ...
- DFS(DP)---POJ 1014(Dividing)
原题目:http://poj.org/problem?id=1014 题目大意: 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两 ...
- hdu 1059 Dividing(多重背包优化)
Dividing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- POJ 1742 Coins(多重背包, 单调队列)
Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar. ...
- POJ 2392【多重背包】
题意: k个块,给出每个块的高度hi,数量ci,不能超过的高度: 求这些块可以组成的最大高度一个. 思路: 大致可看这个题是一个背包,背包的承重是高度. 对于每个物品,有他的价值是高度,还有限定的数量 ...
随机推荐
- Android学习笔记1:Activity与View
推荐一系列优秀的Android开发源码 Activity是Android应用中负责与用户交互的组件. View组件是所有UI控件.容器控件的基类,View组件就是Android应用中用户实实在在看到的 ...
- “互联网+”引发IT人才招工荒-新华网安徽频道
"互联网+"引发IT人才招工荒-新华网安徽频道 "互联网+"引发IT人才招工荒
- 【转】[精华] 跟我一起写 Makefile
陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,m ...
- eclipse+tomcat+httpServlet初学
1.在eclipse中配置tomcat,参考上一边文章,建立的web项目tomcatWeb目录结构 2.添加Servlet处理类 3. 实现doGet()与doPost()方法: <span s ...
- CodeIgniter开发实际案例-新闻网站【转】
CodeIgniter开发实际案例-新闻网站 转:http://blog.csdn.net/ict2014/article/details/22104711?utm_source=tuicool&am ...
- Java三大主流框架概述(转载)
转自:http://www.douban.com/note/320140839/ Struts.Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解 ...
- FragmentStatePagerAdapter.notifyDataSetChanged不刷新页面的解决的方法
公司做医疗产品的,显示操作用的是android.所以我就用上下两个部分大致是固定的,仅仅有中间会有6个页面的切换,当中会有两个用户的切换.即普通用户和管理员用户,图片能够大致展示一下 其他页面是同样的 ...
- HTML5另类塔防游戏 -《三国战线》公布
关于本作 游戏介绍 本游戏是一款另类塔防游戏.本作以三国这段历史为题材,提供了从颍川之战到官渡之战.官渡之战到夷陵之战.夷陵之战到五丈原之战等15个关卡.在每一个关卡中,你会控制一名三国武将与出现的敌 ...
- WCF学习心得--客户端获取服务端自定义类数据
因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...
- apache安全之修改或隐藏版本信息
修改apache版本信息 在安装之前,编辑原文件httpd-2.2.31/include/ap_release.h文件如下: 40 #define AP_SERVER_BASEVENDO ...