hdu1059
#include <stdio.h>
#include <string.h>
#define MAXN 120005
int main()
{
int num[7];
int T = 0;
while (scanf("%d %d %d %d %d %d", &num[1], &num[2], &num[3], &num[4], &num[5], &num[6]) != EOF)
{
T ++;
if (!(num[1] || num[2] || num[3] || num[4] || num[5] || num[6]))
break;
int sum = 0;
int i, j, k;
for (i=1; i<=6; i++)
sum += i * num[i];
if (sum % 2 != 0)
{
printf("Collection #%d:\nCan't be divided.\n\n", T);
continue;
}
int total = sum / 2;
bool flag[MAXN];
memset(flag, false, (total+1)*sizeof(flag[0]));
flag[0] = true;
for (i=1; i<=num[1]; i++)
flag[i] = true;
int much = num[1];
for (i=2; i<=6; i++)
{
if (num[i] == 0)
continue;
for (j=much; j>=0; j--)
{
if (flag[j])
{
for (k=1; k<=num[i] && j + k * i <= total; k++)
{
if (flag[j + k * i])
break;
flag[j + k * i] = true;
}
}
}
much += num[i] * i;
}
if (flag[total])
{
printf("Collection #%d:\nCan be divided.\n\n", T);
}
else
{
printf("Collection #%d:\nCan't be divided.\n\n", T);
}
}
return 0;
}
hdu1059的更多相关文章
- hdu1059 dp(多重背包二进制优化)
hdu1059 题意,现在有价值为1.2.3.4.5.6的石头若干块,块数已知,问能否将这些石头分成两堆,且两堆价值相等. 很显然,愚蠢的我一开始并想不到什么多重背包二进制优化```因为我连听都没有听 ...
- hdu1059 多重背包(转换为01背包二进制优化)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1059 之前写过一个多重背包二进制优化的博客,不懂请参考:http://www.cnblog ...
- hdu1059 Dividing ——多重背包
link:http://acm.hdu.edu.cn/showproblem.php?pid=1059 最简单的那种 #include <iostream> #include <cs ...
- 【二进制拆分多重背包】【HDU1059】【Dividing】
Dividing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- hdu1059(多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意 : 按顺序读入一些列数,所对应的序列代表价值,数值代表个数(如a[5]=6 ,代表价值为五 ...
- hdu-1059(多重背包+二进制优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意:输入6个数,每个数ni代表价值为i的物品有ni个.求如果这些物品能均分给两个人,每个人获得 ...
- HDU1059 二进制拆分优化多重背包
/*问你能不能将给出的资源平分成两半,那么我们就以一半为背包,运行多重背包模版 但是注意了,由于个数过大,直接运行会超时,所以要用二进制拆分每种的个数*/ #include<stdio.h> ...
- dp之多重背包hdu1059
题意:价值为1,2,3,4,5,6. 分别有n[1],n[2],n[3],n[4],n[5],n[6]个.求能否找到满足价值刚好是所有的一半的方案. 思路:简单的多重背包,我建议多重背包都用二进制拆分 ...
- hdu1059(多重背包优化)
使用一种二进制的优化, 可以完美的解决这题,<背包九讲>中说的非常好 但是还有一种线性复杂的算法. 应该算是该题很巧妙的解法 ;i++) { ;l--) { ) continue; ;k& ...
随机推荐
- ImportError: no module named win32api
ImportError: no module named win32api 安装win32包就好了 pip install pypiwin32
- C++的动态库和静态库(dll)
一,在VS里面 新建项目->Visual C++ -> win32 控制台应用程序 -> 填写项目名称->下一步选择 dll : 二,自动生成的文件如图: 以项目名称生成的My ...
- poj 2251 Dungeon Master-搜索进阶-暑假集训
普及一下知识 s.empty() 如果栈为空返回true,否则返回falses.size() 返回栈中元素的个数s.pop() 删除栈顶元素但不返回其值s.top() 返回栈顶的元素,但不删除该元素s ...
- EntityFramework 学习 一 Migration from Entity Framework 4.1/4.3 to Entity Framework 5.0/6.0
To migrate your existing Entity Framework 4.x project to Entity Framework 5.0 using VS2012, first ta ...
- python中字符串使用需要注意的地方
1. r''的使用 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 2. u''的使用 引号之前加上字母u时,python会将 ...
- IntelliJ IDEA Sringboot 项目部署到外部Tomcat服务器
<packaging>war</packaging> 添加依赖 <dependency> <groupId>org.springframework.bo ...
- ajax技术返回json如何处理
json只是一种文本字符串. Smarty是一个使用PHP写出来的模板引擎. ajax如何处理json数据格式 ①json的格式如下: "{属性名:属性值,属性名:属性值}". 因 ...
- JS中的forEach、$.each、map方法推荐
下面小编就为大家带来一篇JS中的forEach.$.each.map方法推荐.小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 orEach是ECMA5中Array新方法中最 ...
- SpringBoot_04_热部署
二.参考资料 1.Spring Boot 系列(六)web开发-Spring Boot 热部署
- hibernate复习第(三)天
今日要点: 1.继承关系映射 一个表对应一个映射树(subclass) 一个子类一个表,子类只有父类没有的字段(joined-subclass) 鉴别器和内连接结合使用(subclass join) ...