codevs 3498 小木棍
乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过100。
现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。
输入文件共有二行。
第一行为一个单独的整数N表示看过以后的小木柜的总数,其中N≤60,第二行为N个用空个隔开的正整数,表示N跟小木棍的长度。
输出文件仅一行,表示要求的原始木棍的最小可能长度。
9
5 2 1 5 2 1 5 2 1
6
N<=60
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 62
using namespace std;
int a[MAXN],vis[MAXN];
int n,num,sum;
void dfs(int x,int aum,int k,int fr){
if(k==x) k=;
if(sum-aum==){ cout<<x<<endl; exit(); }
if(sum-aum<x&&k==||sum-aum<a[n]) return ;
for(int i=fr;i<=n;i++){
if(!vis[i]&&k+a[i]<x){
vis[i]=;
dfs(x,aum+a[i],k+a[i],i+);
vis[i]=;
}
else if(!vis[i]&&k+a[i]==x){
vis[i]=;
dfs(x,aum+a[i],k+a[i],);
vis[i]=;
}
} }
int cmp(int a,int b){
return a>b;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];num=max(num,a[i]);
}
sort(a+,a++n,cmp);
for(int i=num;i<=sum;i++)
if(sum%i==)
dfs(i,,,);
}
/*
7
63 2 44 12 60 35 60
*/
80
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 62
using namespace std;
int a[MAXN],f[MAXN];
int n,num,sum;
bool dfs(int now,int s){
if(s<) return ;
f[now]=;
if(s==) return ;
for(int i=now-;i>=;i--)
if(f[i]&&dfs(i,s-a[i])) return ;
f[now]=;
return ;
}
bool check(int x,int tot){
memset(f,,sizeof(f));
for(int i=;i<=tot;i++)
if(!dfs(n+,x)) return ;
return ;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];num=max(num,a[i]);
}
sort(a+,a++n);
for(int i=num;i<=sum;i++)
if(sum%i==&&check(i,sum/i)){
cout<<i<<endl;
return ;
}
}
/*
7
63 2 44 12 60 35 60
*/
codevs 3498 小木棍的更多相关文章
- 小木棍 (codevs 3498)题解
[问题描述] 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过100. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长 ...
- 洛谷P1120小木棍[DFS]
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
- 洛谷P1120 小木棍
洛谷1120 小木棍 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长 ...
- P1120 小木棍 [数据加强版] 回溯法 终极剪枝
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...
- 洛谷 P1120 小木棍 [数据加强版]解题报告
P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它 ...
- 题解 P1120 【小木棍 [数据加强版]】
题面 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编程帮 ...
- [Luogu P1120]小木棍·加强版
#\(\mathcal{Description}\) 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 \(50\) . 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开 ...
- P1120 小木棍 [数据加强版]
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
- CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先)
CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先) 题意分析 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天, ...
随机推荐
- greendao3.2.3配置时遇到的问题
这两天我一直在研究greendao这个框架,我在GitHub下载了 greendao3.2.2:https://github.com/greenrobot/greenDAO,照着网址里面来配置: // ...
- Android常规布局(网络异常布局、空数据布局,未登录布局等)切换工具类,Layout切换
本人已整理好发布到github,已优化. github地址:https://github.com/buhuiming/StatusLayoutManager 使用:compile 'com.bhm.s ...
- 掌握Spark机器学习库-08.7-决策树算法实现分类
数据集 iris.data 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.Spark ...
- js获取select选中的标签option的值
js中获取方法 var obj = document.getElementByIdx_xx_x(”testSelect”); //定位id var index = obj.selectedInde ...
- WebService 生成客户端
webservice 生成客户端 wsdl2java -encoding UTF-8 -p com.trm -d D:\happywork -client http://localhost/trm-t ...
- struts2 针对类型转换出错的处理
在类型转换出错时,需要在页面上显示友好提示: 类型转换出错时,会抛出一个运行时异常,程序会根据建立的属性文件,显示相应的错误提示. 实现方法: 1)新建局部属性文件或者全局属性文件 局部属性文件:放置 ...
- Laravel Excel安装及最简单使用
官网:https://docs.laravel-excel.com/ 1.安装 1.1.安装要求: PHP: ^7.0 Laravel: ^5.5 PhpSpreadsheet: ^1.6 ...
- Q币直充-迅银渠道商(php 面向对象类)
Q币直充的一个类实现 1 <?php /** * DEC : 迅银Q币直充 * User: David Wang * Time: 2018/5/24 下午1:09 */ namespace go ...
- SQL_Server_2008定期自动备份详细图解
SQL_Server_2008定期自动备份详细图解 设置自动数据库的定期备份计划. http://wenku.baidu.com/link?url=Tu ...
- 学习React从接受JSX开始
详情参考官方JSX规范 虽然JSX是扩展到ECMAScript的类XML语法,但是它本身并没有定义任何语义.也就是说它本身不在ECMAScript标准范围之内.它也不会被引擎或者浏览器直接执行.通常会 ...