代码来源:DeathYmz

AC的C++语言程序如下:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
//dfs 判断是否ok
int a[100],n,vis[100],L,last;
//dfs+剪枝
//1-对拼接到一半发现不能拼接-保留-寻找
//2-
bool dfs(int m,int l)//还剩下棍子和当前拼接剩余长度
{if(m==0&&l==0) return true;if(l==0) l=L;int s=0;if(l!=L)s=last+1;//确保从未拼接的部分开始 for(int i=s;i<n;i++){if(!vis[i-1]&&i>0&&a[i]==a[i-1]) continue;//长度相同跳过 if(!vis[i]&&a[i]<=l){vis[i]=1;last=i;//1if(dfs(m-1,l-a[i])) return true;else{vis[i]=0;if(l==L||a[i]==l) return false;//调整该次拼接的拼法 }}}return false;
}
bool cmp(int a,int b){ return a>b; }
int main()
{ while(scanf("%d",&n)!=EOF&&n){memset(a,0,sizeof(a));int sum=0,l_max=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);sum+=a[i];if(a[i]>l_max)l_max=a[i];}sort(a,a+n,cmp);//从大到小排序 int i;for(i=l_max;i<=sum/2;i++){last=0; memset(vis,0,sizeof(vis));L=i;if(sum%i==0)if(dfs(n,i)){printf("%d\n",i);break;}}if(i>sum/2)printf("%d\n",sum);} return 0;
}

POJ1011 HDU1455 UVA307 UVALive5522 Sticks题解相关推荐

  1. ICPC程序设计题解书籍系列之五:吴永辉:《数据结构编程实验》(第2版)

    第1章 简单计算 UVALive2362 POJ1004 HDU1064 ZOJ1048 Financial Management[数学+水题] - 海岛Blog - CSDN博客 POJ1552 H ...

  2. POJ1011 Sticks

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

  3. 题解 Sticks 小木棍

    题解 Sticks 小木棍 题目描述: 每组数据给出N根小木棍,把它们拼接成若干根长度相等的木棍,求该长度的最小值. 题解: 该题就是dfs深搜+剪枝 ```cpp #include<iostr ...

  4. UVa307 - Sticks(DFS+剪枝)

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

  5. codeforces654题解_[codeforces 1374A] Magical Sticks 棍子拼接

    Codeforces Round #654 (Div. 2)   参与排名人数14349   本场比赛主要心思放在观摩高手如何打比赛,发现初中生真的很厉害. [codeforces 1374A]    ...

  6. UVA307 Sticks小木棍

    题意:一开始有n根同样的小木棍,后来将其切成长度不超过50的小木棍,问原来小木棍最短长度是多少,例如砍完后有四根,长度分别为1,2,3,4,原来长度可能为5,或10.5是最小可能长度. 分析:可以用深 ...

  7. POJ1011———Sticks

    /*dfs,剪枝是关键.╮(╯▽╰)╭本来是想一根棍子 一个棍子的填充,遇到棍子不合适的就回溯.但是实验 证明这绝对是剪错方向的!正确的解法是...先寻找 第一根棍子合不合适,如果不合适就没有必要找下 ...

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

  9. POJ 2653 Pick-up sticks (线段相交)

    题意:给你n条线段依次放到二维平面上,问最后有哪些没与前面的线段相交,即它是顶上的线段 题解:数据弱,正向纯模拟可过 但是有一个陷阱:如果我们从后面向前枚举,找与前面哪些相交,再删除前面那些相交的线段 ...

最新文章

  1. 中文 查询_查询商标,商标注册通过分析的几个小技巧
  2. C#操作xml文件入门
  3. 【Linux开发】linux设备驱动归纳总结(六):3.中断的上半部和下半部——tasklet...
  4. mysql以秒为单位限制资源_MYSQL中限制资源的使用
  5. 年买笔记本的8个小技巧 最适合自己才最好(组图)
  6. hbase major_compact 文件会变小吗_图解式学习:可能是最易懂的Hbase架构原理解析(二)...
  7. 基于AFD驱动的进程流量控制
  8. 百度指数 php,百度指数是什么?百度指数有什么用?百度指数怎么用?
  9. 苹果x微信为什么不出定位服务器,苹果x微信发动态为什么显示不了位置
  10. 【jq练习】层次选择器
  11. uniapp小程序发布经验
  12. FL Studio电音编曲软件V21中文完整版 安装下载教程
  13. 计算机的发展英语600词,计算机英语的词汇变化
  14. 燃烧的远征java(一)-开发环境:JDK1.6+tomcat5.5
  15. 利用人工势场法的最短路径寻找
  16. DataView的用法
  17. 如何在云服务器上部署web项目(CVM)
  18. cpu负载过高产生的原因及排查
  19. ups linux 电脑自动关机,停电后服务器自动关机工具(有UPS电源) 在UPS消耗完电前自动关机...
  20. Vue系列文章(一)———解决:ERROR TypeError: Cannot read property ‘NormalModule‘ of undefined等问题方案

热门文章

  1. android shape 绘制气泡图,气泡图-自定义 shape
  2. VirtualBox启动失败,The VM session was aborted.
  3. Hive的三种建表方式
  4. Bug--时区问题导致IDEA连接数据库失败
  5. Sqoop 数据增量导出,--update-key添加多个字段
  6. 详解:Oracle数据库的分区表
  7. python面向对象遇见问题
  8. TensorFlow入门篇(三):MNIST数据集简易分类
  9. 【宏编程】word统一修改图片样式
  10. Delphi一句话帮助