题目描述

乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。

现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。

给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。

输入输出格式

输入格式:

输入文件共有二行。

第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中N≤65

(管理员注:要把超过50的长度自觉过滤掉,坑了很多人了!)

第二行为N个用空个隔开的正整数,表示N根小木棍的长度。

输出格式:

输出文件仅一行,表示要求的原始木棍的最小可能长度

输入输出样例

输入样例#1:

9
5 2 1 5 2 1 5 2 1

输出样例#1:

6

思路:  大搜索;  (思路来源:http://blog.csdn.net/chai_jing/article/details/52450419)

来,上代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;int n,len[101],cnt,maxlen,ans,Len,tot;bool if_[101],if_re;bool dfs(int now,int le,int num)
{if(num==tot+1) return false;if(le==0){if(num==tot) return true;return dfs(1,Len,num+1);}for(int i=now+1;i<=n;i++){if(le-len[i]>=0){if(!if_[i]){if_[i]=true;if(dfs(i,le-len[i],num)) return true;if_[i]=false;if(len[i]==le) break;if(le==Len) break;while(len[i+1]==len[i]) i++;}}}return false;
}bool check(int lenth)
{Len=lenth;tot=cnt/lenth;for(int i=2;i<=n;i++) if_[i]=false;return dfs(1,Len-len[1],1);
}bool cmp(int a,int b)
{return a>b;
}int main()
{int n_,pos;scanf("%d",&n_);for(int i=1;i<=n_;i++){scanf("%d",&pos);if(pos<=50){maxlen=max(pos,maxlen);len[++n]=pos,cnt+=pos;}}sort(len+1,len+n+1,cmp);for(int i=maxlen;i<=cnt;i++){if(cnt%i==0&&check(i)){ans=i;break;}}cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6644057.html

AC日记——小木棍【数据加强版】 洛谷 P1120相关推荐

  1. AC日记——小书童——刷题大军 洛谷 P1926

    题目背景 数学是火,点亮物理的灯:物理是灯,照亮化学的路:化学是路,通向生物的坑:生物是坑,埋葬学理的人. 文言是火,点亮历史宫灯:历史是灯,照亮社会之路:社会是路,通向哲学大坑:哲学是坑,埋葬文科生 ...

  2. AC日记——[USACO07DEC]手链Charm Bracelet 洛谷 P2871

    题目描述 Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like t ...

  3. AC日记——红色的幻想乡 洛谷 P3801

    红色的幻想乡 思路: 线段树+容斥原理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #de ...

  4. AC日记——最小路径覆盖问题 洛谷 P2764

    题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...

  5. 洛谷[P1120 小木棍]

    洛谷[P1120 小木棍] 题目: 思路: 枚举小木棒可能的长度,从数组最大值开始枚举,这个值能被总长度整除才是可行的 在使用dfs枚举小木棒的每一种可能,如果不可能就找下一个可能的长度开始枚举 注意 ...

  6. 小木棍(洛谷-P1120)

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...

  7. 洛谷 P1120 小木棍 题解

    这就是一道明显的爆搜题(人家洛谷也说了,,,),只是需要几个小小的优化,接下来为大家介绍一下: 1.将木棍先排个序(用处后面会讲),记住 长度>50 的要去掉 2.因为每一根的长度都不大于50, ...

  8. 洛谷P1120小木棍

    肝了一天的题了,求过 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度 ...

  9. 洛谷P1120小木棒 爆搜+剪枝

    题解 暴搜的思路容易想到,但是剪枝细节有很多,数据很强. 搜索思路: a. 用dfs(left_num,left_len,bound)表示当前还需要拼left_num根木棒,当前正在拼的木棒还剩lef ...

最新文章

  1. C#读写xml文件最简单方法(操作配置文件)
  2. mfc怎么计算字符串宽度_Python基础之好玩的字符串格式化f-string格式
  3. page cache 与free
  4. Android资源文件在配置文件中的使用
  5. 深入理解Magento – 第二章 – Magento请求分发与控制器
  6. css3实现的一些灰色的导航条按钮
  7. 判断字符串中是否包含指定字符(JavaScript)
  8. linux系统vnc无法远程桌面,linux下vnc远程桌面连接方法分享
  9. 大数据面试-03-大数据工程师面试题
  10. fluent瞬态计算终止条件在哪里设置_workbench 热传导及热应力计算
  11. m7405d粉盒清零方法_打印机清零方法总览
  12. msfconsole php,msfconsole从入门到放弃
  13. 带通滤波器的设计概述
  14. PIC单片机应用开发实践教程(二): 新建工程
  15. matlab的textscan与textread区别(转)
  16. PGSQL查询今天生日的员工
  17. 树莓派内网穿透方法大全
  18. 为程序员讨回失去的午觉,我被投诉了,差点吃官司
  19. 网易有道能否异军突起—网易押宝
  20. 区块链加/解密:对称加密

热门文章

  1. [Swift]LeetCode17. 电话号码的字母组合 | Letter Combinations of a Phone Number
  2. Golang遇到的问题记录
  3. 07-异常处理——动手动脑
  4. 深入剖析Redis RDN持久化机制
  5. DataTable相关
  6. HDU 4647 Another Graph Game
  7. VS2005的几款代码皮肤。
  8. Notepad++使用技巧
  9. Jsp对字符串的处理
  10. 常用的对象处理工具类