/*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相关推荐

  1. POJ1011 Sticks

    POJ1011 Sticks 剪枝好题,具体见代码: 1 #include <cstdio> 2 #include <algorithm> 3 #include <cst ...

  2. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  3. 竞赛程序设计知识要点图谱

    一.基础算法 1.枚举法 POJ1248 Safecracker HDU1172 猜数字 POJ1543 Perfect Cubes POJ1046 Color Me Less 2.递归法:Hanoi ...

  4. POJ1011 HDU1455 UVA307 UVALive5522 Sticks题解

    代码来源:DeathYmz AC的C++语言程序如下: #include<cstdio> #include<iostream> #include<cstring> ...

  5. HDU1051Wooden Sticks

    Wooden Sticks http://acm.hdu.edu.cn/showproblem.php?pid=1051 #include<stdio.h> struct stick{ i ...

  6. UVa307 - Sticks(DFS+剪枝)

    题意:给出若干个一样长的sticks,剪断后有n个部分,问原来sticks的最小长度. 思路:首先要确定sticks的长度范围,范围应该在[max(n1,n2..., n), sum(n1,n2... ...

  7. HDU-1051 Wooden Sticks

    Wooden Sticks       Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. 欧拉路径 之 poj 2513 Colored Sticks

    /* 欧拉路径 之 poj 2513 Colored Sticks欧拉路径: 若图G中存在这样一条路径,使得它恰通过G中每条边一次,则称该路径为欧拉路径.无向图存在欧拉路径 充要条件:1) 图是连通的 ...

  9. 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 ...

最新文章

  1. 醉话没有测试(QA)的测试
  2. SAP ABAP SQL查询分析器
  3. [渝粤教育] 苏州工艺美术职业技术学院 PPT美化设计 参考 资料
  4. SQL数据库相关 FMDB框架的使用
  5. 树状结构搜索功能_ICLR 2020 高分论文!利用稀疏多层次Transformer结构获取语法树!...
  6. poj 2479 (DP)
  7. 提高效率--录制视频教程
  8. 一次cpu占用100%的故障解决
  9. 全球地名中英文对照表(S)
  10. 串口-TCP调试助手
  11. 开源中文语音识别项目介绍:ASRFrame
  12. 宿主机支持avx2指令集,为什么虚拟机cpu就不支持avx2指令集了
  13. 【blender】基本操作总结-最常用的快捷键
  14. 计算机上有哪些操作系统?
  15. 仿生机制算法——细胞吸引子模型(附Matlab代码)
  16. 在Redhat9下安装Oracle9
  17. 1072. 开学寄语(20)
  18. 【Codeforces】Codeforces之丰【部分题解】
  19. ADS2017安装步骤
  20. 对行人重识别(RE-ID)问题的初步了解(一)

热门文章

  1. 计算机无法读取exe文件,电脑打不开exe文件怎么解决
  2. ubuntu mysql 操作_Ubuntu系统下MySQL数据库基本操作
  3. 构建集中式会话的分析与实践(一)
  4. Inconsistency detected Invalid view holder adapter position
  5. spring data redis的使用jar包版本冲突问题
  6. CIO众论:转型路径和新技术实践
  7. dataguard类型转换与模式转化
  8. Thrift协议的服务模型
  9. CentOS 6.4 安装 media wiki 1.23.6(转)
  10. php分享十七:http状态码