POJ1011———Sticks
/*dfs,剪枝是关键。╮(╯▽╰)╭本来是想一根棍子 一个棍子的填充,遇到棍子不合适的就回溯。但是实验 证明这绝对是剪错方向的!正确的解法是。。。先寻找 第一根棍子合不合适,如果不合适就没有必要找下去了, 这是关键点。这题堪称剪枝之最啊~~~~~ */#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> using namespace std; #define M 100 typedef long long LL; int N,a[M],mark,vis[M],m; bool dfs(int num,int re,int dul) //当dul等于0,就是重新找棍子的开始 {if(num==1) return true;int p;for(int i=0; i<N; ++i){if(!vis[i]){if((p=re+a[i])<mark) //拼凑棍子 {vis[i]=1;if(dfs(num,p,i+1)) return true;vis[i]=0;if(dul==0) break; //如果这个棍子找不到,就没有必要找下去了 }else if(p==mark) //拼凑成功 {vis[i]=1;if(dfs(num-1,0,0)) return true;vis[i]=0;break; //如果找不到这根新的棍子就没有必要继续下去了。 }}}return false; } bool cmp(int m,int n) {return m>n; } int main() { //freopen("abc.txt","r",stdin);while(~scanf("%d",&N)&&N){int sum=0;for(int i=0; i<N; ++i){scanf("%d",&a[i]);sum+=a[i];}sort(a,a+N,cmp);int mmd=a[0];while(1){while(sum%mmd!=0) //寻找可以被sum整除的数mmd++;memset(vis,0,sizeof(vis));mark=mmd;if(dfs(sum/mmd,0,0)) break;mmd++;}printf("%d\n",mmd);} }
转载于:https://www.cnblogs.com/A-way/archive/2012/11/05/2755206.html
POJ1011———Sticks相关推荐
- POJ1011 Sticks
POJ1011 Sticks 剪枝好题,具体见代码: 1 #include <cstdio> 2 #include <algorithm> 3 #include <cst ...
- ACM题集以及各种总结大全(转)
ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...
- 竞赛程序设计知识要点图谱
一.基础算法 1.枚举法 POJ1248 Safecracker HDU1172 猜数字 POJ1543 Perfect Cubes POJ1046 Color Me Less 2.递归法:Hanoi ...
- POJ1011 HDU1455 UVA307 UVALive5522 Sticks题解
代码来源:DeathYmz AC的C++语言程序如下: #include<cstdio> #include<iostream> #include<cstring> ...
- HDU1051Wooden Sticks
Wooden Sticks http://acm.hdu.edu.cn/showproblem.php?pid=1051 #include<stdio.h> struct stick{ i ...
- UVa307 - Sticks(DFS+剪枝)
题意:给出若干个一样长的sticks,剪断后有n个部分,问原来sticks的最小长度. 思路:首先要确定sticks的长度范围,范围应该在[max(n1,n2..., n), sum(n1,n2... ...
- HDU-1051 Wooden Sticks
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- 欧拉路径 之 poj 2513 Colored Sticks
/* 欧拉路径 之 poj 2513 Colored Sticks欧拉路径: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.无向图存在欧拉路径 充要条件:1) 图是连通的 ...
- Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心
Codeforces Round #297 (Div. 2)C. Ilya and Sticks Time Limit: 2 Sec Memory Limit: 256 MB Submit: xxx ...
最新文章
- 醉话没有测试(QA)的测试
- SAP ABAP SQL查询分析器
- [渝粤教育] 苏州工艺美术职业技术学院 PPT美化设计 参考 资料
- SQL数据库相关 FMDB框架的使用
- 树状结构搜索功能_ICLR 2020 高分论文!利用稀疏多层次Transformer结构获取语法树!...
- poj 2479 (DP)
- 提高效率--录制视频教程
- 一次cpu占用100%的故障解决
- 全球地名中英文对照表(S)
- 串口-TCP调试助手
- 开源中文语音识别项目介绍:ASRFrame
- 宿主机支持avx2指令集,为什么虚拟机cpu就不支持avx2指令集了
- 【blender】基本操作总结-最常用的快捷键
- 计算机上有哪些操作系统?
- 仿生机制算法——细胞吸引子模型(附Matlab代码)
- 在Redhat9下安装Oracle9
- 1072. 开学寄语(20)
- 【Codeforces】Codeforces之丰【部分题解】
- ADS2017安装步骤
- 对行人重识别(RE-ID)问题的初步了解(一)
热门文章
- 计算机无法读取exe文件,电脑打不开exe文件怎么解决
- ubuntu mysql 操作_Ubuntu系统下MySQL数据库基本操作
- 构建集中式会话的分析与实践(一)
- Inconsistency detected Invalid view holder adapter position
- spring data redis的使用jar包版本冲突问题
- CIO众论:转型路径和新技术实践
- dataguard类型转换与模式转化
- Thrift协议的服务模型
- CentOS 6.4 安装 media wiki 1.23.6(转)
- php分享十七:http状态码