AC日记——Dividing poj 1014
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 69575 | Accepted: 18138 |
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<cstdio>
#include<cstring> using namespace std; int a[],sum_value=,ci[][],now=; bool dp[][]; bool Check_Answer()
{
memset(dp,false,sizeof(dp));
dp[][]=true;
for(int i=;i<=;i++)
{
for(int j=;j<=sum_value;j++)
{
if(dp[i][sum_value]) return true;
if(dp[i-][j])
{
for(int v=;v<=a[i];v++) dp[i][j+ci[i][v]]=true;
}
}
}
if(dp[][sum_value]) return true;
else return false;
} int main()
{
bool if_break;
while()
{
if_break=true,sum_value=,now++;
for(int i=;i<=;i++)
{
scanf("%d",&a[i]);
if(a[i]) if_break=false;
sum_value+=a[i]*i;
for(int j=;j<=a[i];j++) ci[i][j]=i*j;
}
if(if_break) break;
if(sum_value%)
{
printf("Collection #%d:\nCan't be divided.\n\n",now);
continue;
}
sum_value/=;
if(Check_Answer()) printf("Collection #%d:\nCan be divided.\n\n",now);
else printf("Collection #%d:\nCan't be divided.\n\n",now);
}
return ;
}
另附我的一个失败代码:
#include<cstdio>
#include<cstring> using namespace std; int a[],sum_value,num,ci[],flag; bool dp[]; int main()
{
int now=;
while()
{
now++;
memset(dp,false,sizeof(dp));
sum_value=,num=,flag=;
bool if_break=true;
for(int i=;i<=;i++)
{
scanf("%d",&a[i]);
sum_value+=a[i]*i,num+=a[i];
if(a[i]!=)
{
if_break=false;
for(int j=flag;j<flag+a[i];j++) ci[j]=i;
flag+=a[i];
}
}
if(if_break) break;
if(sum_value%)
{
printf("Collection #%d:\nCan't be divided.\n\n",now);
continue;
}
sum_value/=;
int max_now=;
dp[]=true;
for(int i=;i<=num;i++)
{
int max_now_=max_now;
for(int j=;j<=max_now;j++)
{
if(dp[j])
{
dp[j+ci[i]]=true;
if(j+ci[i]==sum_value)
{
printf("Collection #%d:\nCan be divided.\n\n",now);
if_break=true;
break;
}
if(j+ci[i]>max_now_&&j+ci[i]<=sum_value) max_now_=j+ci[i];
}
}
max_now=max_now_;
if(if_break) break;
}
if(if_break) continue;
printf("Collection #%d:\nCan't be divided.\n\n",now);
}
return ;
}
AC日记——Dividing poj 1014的更多相关文章
- AC日记——Tree poj 3237
Tree Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 9233 Accepted: 2431 Description ...
- AC日记——Crane poj 2991
POJ - 2991 思路: 向量旋转: 代码: #include <cmath> #include <cstdio> #include <cstring> #in ...
- AC日记——pigs poj 1149
POJ - 1149 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include <iostream> # ...
- Dividing POJ - 1014 多重背包二进制优化
多重背包模型 写的时候漏了一个等号找了半天 i<<=1 !!!!!! #include<iostream> #include<cstdio> #include&l ...
- AC日记——Dining poj 3281
[POJ-3281] 思路: 把牛拆点: s向食物连边,流量1: 饮料向t连边,流量1: 食物向牛1连边,流量1: 牛2向饮料连边,流量1: 最大流: 来,上代码: #include <cstd ...
- AC日记——Two poj 1849
Two 思路: 树形DP求直径: 答案是边权总和*2-直径: dp[i][1]::以i为根的子树中最长的路径: dp[i][0]::以i为根的子树中次长的路径: 来,上代码: #include < ...
- AC日记——Oulipo poj 3461
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37958 Accepted: 15282 Description The ...
- 证明 poj 1014 模优化修剪,部分递归 有错误
这个问题是存在做.我发现即使是可行的一个问题,但不一定正确. 大部分数据疲软,因为主题. id=1014">poj 1014 Dividing 题目大意:有6堆石头,权重分别为1 2 ...
- AC日记——codevs1688求逆序对
AC日记--codevs1688求逆序对 锵炬 掭约芴巷 枷锤霍蚣 蟠道初盛 到被他尽情地踩在脚下蹂躏心中就无比的兴奋他是怎么都 ㄥ|囿楣 定要将他剁成肉泥.挫骨扬灰跟随着戴爷这么多年刁梅生 圃鳋 ...
随机推荐
- 原生JS:Array对象详解
Array对象 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...
- Ioc容器Autofac系列(1)-- 初窥
一.前言 第一次接触Autofac是因为CMS系统--Orchard,后来在一个开源爬虫系统--NCrawler中也碰到过,随着深入了解,我越发觉得Ioc容器是Web开发中必不可少的利器.那么,Io ...
- Web自动化测试 Selenium 3/3 https的配置
Https的信任问题处理 具体步骤如下(以demo为例) 1) ./ca.sh : 使用默认的服务器192.168.1.1的证书 ./ca.sh IP : 使用IP设置的证书 2) 以上运行后把 ge ...
- UILabel用法
// UILabel -> UIView // UILabel用来显示文字内容 //创建一个Label,一般都直接通过initWithFrame确定位置跟大小 UILabel *lb = [[U ...
- Android对话框
这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . . 只是可怜了我的那些被格了的软件(悲伤辣么大)! 往事不要再提,人生几度风雨... 简 ...
- Xcode快捷键大全
转载地址http://www.360doc.com/content/12/0521/09/6541311_212458595.shtml.
- 【原+转】用CMake代替makefile进行跨平台交叉编译
在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑.因为很多开源的程序,比如png,都是自带编译脚本的.我们可以使用下列脚本来进行编译: ./configu ...
- 2.1 CMMI2级——7个PA简述
摘要: 阶段式的CMMI没有1级,最开始的级别就是2级.一个处于“无序化”生产的软件公司,要进行过程改进,首要是改进什么呢?2级告诉你,我们需要从计划.计划跟踪.需求管理.采购.度量.配置管理.质量保 ...
- android Gui系统之SurfaceFlinger(5)---Vsync(2)
9.Vsync第二部分 在上一篇中我们讲到,视图的刷新需要很多步骤, void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); preC ...
- INBOUND_CONNECT_TIMEOUT与SQLNET.INBOUND_CONNECT_TIMEOUT小结
关于sqlnet.ora的参数SQLNET.INBOUND_CONNECT_TIMEOUT,它表示等待用户认证超时的时间,单位是秒,缺省值是60秒,如果用户认证超时了,服务器日志alert.log显示 ...