POJ 1014 Dividing(入门例题一)
- Time Limit: 1000MS Memory Limit: 10000K
- Total Submissions: Accepted:
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
Sample Output
- Collection #:
- Can't be divided.
- Collection #:
- Can be divided.
解题思路
因为是第一道例题,所以只做一些大佬AC代码的笔记,以下是参考博客的讲解:
如果总价值为奇数,那么肯定是不能分的。如果总价值为偶数,也不一定能分,因为一个弹珠是不能被拆分的。
以总价值的1/2为背包容量,进行动态规划求解。还用了二进制优化的方法,可以说这道题目是简单的多重背包吧。
dp[x]=1表示这些弹珠可以凑出价值为x的部分,否则就是不能凑成价值为x的部分。
参考博客
https://blog.csdn.net/u011561033/article/details/39526897
AC代码
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int main()
- {
- int n,sum,i,j,k,cs=;
- int a[];
- int dp[]; //大于6*20000
- while(scanf("%d",&a[])!=-)
- {
- sum=a[];
- for(i=; i<=; i++)
- {
- scanf("%d",&a[i]);//i为1,2,3,4,5,6,存储各类弹珠数量
- sum+=a[i]*i;
- }
- if(sum<=)break; //没有弹珠,即最后一行的情况
- memset(dp,,sizeof(dp));
- printf("Collection #%d:\n",cs++);
- if(sum%)printf("Can't be divided.\n");//奇数一定不可分
- else
- {
- dp[]=; //初始化0,0肯定是可分出来的
- sum/=; //背包容量
- for(i=; i<=; i++)
- {
- if(a[i]==)continue;
- for(k=; k<=a[i]; k*=)//先处理偶数情况,将偶数分值归到dp中,倒序同样是因为还原成了0-1背包问题,将大物品拆分成了各个小物品
- {
- for(j=sum; j>=; j--)
- {
- if(dp[j]==||j+i*k>sum)continue;
- dp[j+i*k]=;
- }
- a[i]-=k;
- }
- if(a[i]>)//处理剩余的数的情况,比如10分为1,2,4之后还剩3
- {
- for(j=sum; j>=; j--)
- {
- if(dp[j]==||j+i*a[i]>sum)continue;
- dp[j+i*a[i]]=;
- }
- }
- }
- if(dp[sum]==)
- printf("Can be divided.\n");
- else printf("Can't be divided.\n");
- }
- printf("\n");
- }
- return ;
- }
POJ 1014 Dividing(入门例题一)的更多相关文章
- POJ 1014 Dividing(多重背包+二进制优化)
http://poj.org/problem?id=1014 题意:6个物品,每个物品都有其价值和数量,判断是否能价值平分. 思路: 多重背包.利用二进制来转化成0-1背包求解. #include&l ...
- DFS(DP)---POJ 1014(Dividing)
原题目:http://poj.org/problem?id=1014 题目大意: 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两 ...
- POJ 1014 Dividing
Dividing Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 66032 Accepted: 17182 Descriptio ...
- POJ 1014 Dividing(多重背包)
Dividing Description Marsha and Bill own a collection of marbles. They want to split the collectio ...
- POJ 1014 Dividing 多重背包
Dividing Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63980 Accepted: 16591 Descri ...
- 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 (多重可行性背包)
题意 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两份的总价值相等,其中一个物品不能切开,只能分给其中的某一方,当输入六个0是( ...
- POJ 1014 Dividing(多重背包, 倍增优化)
Q: 倍增优化后, 还是有重复的元素, 怎么办 A: 假定重复的元素比较少, 不用考虑 Description Marsha and Bill own a collection of marbles. ...
- POJ 1014 Dividing 背包
二进制优化,事实上是物体的分解问题. 就是比方一个物体有数量限制,比方是13,那么就须要把这个物体分解为1. 2, 4, 6 假设这个物体有数量为25,那么就分解为1, 2, 4. 8. 10 看出规 ...
随机推荐
- 超详细的Hadoop2配置详解
1. 集群环境 Master 192.168.2.100 Slave1 192.168.2.101 Slave2 192.168.2.102 2. 下载安装包 Master wget http://m ...
- tensorflow API _ 3 (tf.train.polynomial_decay)
学习率的三种调整方式:固定的,指数的,多项式的 def _configure_learning_rate(num_samples_per_epoch, global_step): "&quo ...
- K-Nearest Neighbors Algorithm
K近邻算法. KNN算法非常简单,非常有效.KNN算法适合样本较少典型性较好的样本集. KNN的模型表示是整个训练数据集.也可以说是:KNN的特点是完全跟着数据走,没有数学模型可言. 对一个新的数据点 ...
- ajax 样式
Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.它是一种构建网站的强大方法. 使用aja ...
- Xamarin移动开发之路
Xamarin入门 1.Xamarin开发及学习资源 2.Xamarin安装及调试 Xamarin.Forms 1.入门 [快速入门] 2.XAML 3.应用程序基础知识 [辅助功能]eg:大类型.高 ...
- 通过redash query results 数据源实现跨数据库的查询
redash 提供了一个简单的 query results 可以帮助我们进行跨数据源的查询处理 底层数据的存储是基于sqlite的,期望后期有调整(毕竟处理能力有限),同时 query results ...
- jQuery - 添加元素append/prepend和after/before的区别
append <p> <span class="s1">s1</span> </p> <script> $(" ...
- python 判断一个字符串组合后,是否在另一个字符串中
code #coding=utf- def getdic(s): dic = {} for i in s: if (i not in dic): dic[i] = else: dic[i] += re ...
- webpack系列之安装(Mac OS)
1. webpack介绍,可参考Webpack中文文档 2. 安装webpack之前先需要安装npm,可参看NPM的使用介绍 3. 安装webpack,可参考Webpack入门教程 ========= ...
- Jmeter(四十二)_控制器下遍历一组参数
概述 在接口自动化的过程中,经常遇到需要遍历的参数组.jmeter在中,foreach控制器可以实现遍历参数,但是只能有一个入参.一旦遇到数组,foreach控制器表示我也无能为力... 为了解决这个 ...