UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>
E - 吴队长征婚
Time Limit: 10000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
吴队长征婚这件事因为请客而没有传出去(虽然他忘了请一个队吃饭),于是吴队长高兴地玩起了木棒。吴队长拿了一些长度相同的木(guang)棒(gun),随机的把它们截成了N段,每一段最长50。现在他想把这些木棒还原成原来的状态,但是他忘记了原来的木棒有多少根,也忘记了每一根有多长。请帮助他设计一个程序,帮他计算之前木棒可能的最小长度。输入数据保证每一段木棒长度都大于0。
Input
输入有多组数据,每组数据分为两行。
第一行一个整数N,表示截断之后木棒的个数。1≤N≤64
第二行N个整数,表示截断之后的每一段小木棒的长度。 当N=0时,表示输入结束。
Output
每组数据输出一个整数占一行,表示原木棒可能的最小长度。
Sample input and output
| Sample Input | Sample Output |
|---|---|
9 |
6 |
解题报告:
先对木棒进行降序排序
我们设计几个剪枝:
1.每截木棒肯定是和的约数
2.若正在拼某截的第一段,而此时最大的木棒用不上,直接回溯
3.若拼完某截木棍后,剩下的无法拼成,直接回溯
4.若该木棍用不上,之后所有长度相同的木棍也用不上
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
int tn,tlen,len[],n;
bool use[]; bool cmp(int x,int y)
{
return x > y;
} bool dfs(int cur,int res,int pos)
{
if (res == tlen)
{
res = ;
pos = ;
cur ++;
}
if (cur == tn)
return true;
for(int i = pos;i < n ; ++ i)
if (!use[i] && res + len[i] <= tlen)
{
use[i] = true;
if (res + len[i] == tlen)
{
if (!dfs(cur+,,))
{
use[i] = false;
return false;
}
return true;
}
else
{
if (dfs(cur,res+len[i],i+))
return true;
use[i] = false;
if (res == )
return false;
for(int j = i + ; j < n ; ++ j)
if(len[i] == len[j])
i++;
}
}
return false;
} int main(int argc , char * argv[])
{
while(scanf("%d",&n) && n)
{
int sum = ;
for(int i = ; i < n ; ++ i)
{
scanf("%d",&len[i]);
sum += len[i];
}
memset(use,false,sizeof(use));
sort(len,len+n,cmp);
int ok = ;
for(int i = len[] ; i <= sum / ; ++ i)
if (sum % i == )
{
tn = sum / i;
tlen = i;
if(dfs(,,))
{
cout << i << endl;
ok = ;
break;
}
}
if(!ok)
cout << sum << endl;
}
return ;
}
UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>的更多相关文章
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>
A - 王之迷宫 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UESTC_韩爷的梦 2015 UESTC Training for Search Algorithm & String<Problem N>
N - 韩爷的梦 Time Limit: 200/100MS (Java/Others) Memory Limit: 1300/1300KB (Java/Others) Submit Stat ...
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Su ...
- UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>
J - 全都是秋实大哥 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Subm ...
- UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>
D - 基爷的中位数 Time Limit: 5000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>
C - 基爷与加法等式 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
B - 邱老师降临小行星 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65536/65535KB (Java/Others) Su ...
- UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>
M - Palindromic String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 128000/128000KB (Java ...
- UESTC_Ferris Wheel String 2015 UESTC Training for Search Algorithm & String<Problem L>
L - Ferris Wheel String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 43000/43000KB (Java/ ...
随机推荐
- 【转】ubuntu设置PATH----不错
原文网址:http://no001.blog.51cto.com/1142339/554927 试了好多遍,多无效.. 最后在/etc/enviroment下设置才有效. 不过让有一些未解问题 我使用 ...
- 将DataTable转化为json对象
private string DataTableTojson(DataTable dt) { List> list=new List>(); ...
- 什么是野指针?(What is a wild pointer?)
未被初始化的变量称为野指针(wild pointer).顾名思义,我们不知道这个指针指向内存中的什么地址,使用不当程序会产生各种各样的问题. 理解下面的例子: int main() { int *p; ...
- Spoj1771-Yet Another N-Queen Problem(精确覆盖)
Description After solving Solution to the n Queens Puzzle by constructing, LoadingTime wants to solv ...
- Tomcat 官网知识总结篇
Tomcat 官网知识总结一.Tomcat 基本介绍 1.关键目录 a) bin 该目录包含了启动.停止和启动其他的脚本,如startup.sh.shutdown.sh等; b) conf 配置文件和 ...
- JavaScript-------寄生组合式继承
组合继承在前面有说过,也是JavaScript中最常用的一个继承模式:不过,它也有自己的不足.组合继承最大的问题就是无论什么情况,都会调用两次构造函数: 那我们来回顾下组合式继承基本模式: funct ...
- HTML - EMail链接
HTML - EMail链接 HTML Email 标签 在标签中,提供一个email地址,你就可以让用户发送邮件,格式是: <a href= "mailto:jack@kingyar ...
- XtraReport改变纸张方向
XtraReport纸张方向改变可以通过修改Landscape属性: Landscape=true 为横向输出 Landscape=false 为纵向输出
- jxl 使用
public static void main(String args[]) {try {// 打开文件WritableWorkbook book = Workbook.createWorkbook( ...
- Kernel Regression from Nando's Deep Learning lecture 5
require 'torch' require 'gnuplot' , , nData) ) print(xTrain) print(yTrain) local yTrain = yTrain + t ...