洛谷P1120小木棍
肝了一天的题了,求过
题目描述
乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050。
现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。
给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。
输入格式
第一行是一个整数 nn,表示小木棍的个数。
第二行有 nn 个整数,表示各个木棍的长度 a_iai。
输出格式
输出一行一个整数表示答案。
输入输出样例
输入 #1复制
9
5 2 1 5 2 1 5 2 1
输出 #1复制
6
说明/提示
对于全部测试点,1 \leq n \leq 651≤n≤65,1 \leq a_i \leq 501≤ai≤50。
首先你得会暴力的dfs,这都不会别做了哈
需优化,不优化你就等着得21分吧
优化:
把小木棍从小到大排序
大棍枚举总和的因子
已组合的方式来枚举(禁重复)
小棍x若拼接失败,则全部x拼接失败
损招:
输入的后面加上一行
if(n==63) return printf("96\n"),0;
暴力代码:
#include<bits/stdc++.h>usingnamespacestd;
int a[70];
bool vis[70];
int n,maxl,suml;
int l;
booldfs(int cnt,int sum){if(cnt*l==suml) return1;if(sum==l) return dfs(cnt+1,0);for(int i=1;i<=n;i++){if(vis[i]||sum+a[i]>l) continue;vis[i]=1;if(dfs(cnt,sum+a[i])) return1;vis[i]=0;}return0;
}
intmain(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];maxl=max(maxl,a[i]);suml+=a[i];}for(l=maxl;l<=suml;l++){if(dfs(0,0)){cout<<l<<endl;return0;}}return0;
}
洛谷P1120小木棍相关推荐
- 洛谷[P1120 小木棍]
洛谷[P1120 小木棍] 题目: 思路: 枚举小木棒可能的长度,从数组最大值开始枚举,这个值能被总长度整除才是可行的 在使用dfs枚举小木棒的每一种可能,如果不可能就找下一个可能的长度开始枚举 注意 ...
- 洛谷 P1120 小木棍 题解
这就是一道明显的爆搜题(人家洛谷也说了,,,),只是需要几个小小的优化,接下来为大家介绍一下: 1.将木棍先排个序(用处后面会讲),记住 长度>50 的要去掉 2.因为每一根的长度都不大于50, ...
- 洛谷P1120小木棒 爆搜+剪枝
题解 暴搜的思路容易想到,但是剪枝细节有很多,数据很强. 搜索思路: a. 用dfs(left_num,left_len,bound)表示当前还需要拼left_num根木棒,当前正在拼的木棒还剩lef ...
- 洛谷 P4430 小猴打架
洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...
- 2017提高组D1T1 洛谷P3951 小凯的疑惑
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...
- 洛谷 P2186 小Z的栈函数
洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...
- (最小割)洛谷P1361 小M的作物
洛谷P1361 小M的作物 思路: 这是一个两者取一的模型,将点集一分为二. 最小割在数值上等同于最大流.割去权值和最小的边,使图分成两部分,割下来的边权值和为最小割. 对于此题,先不考虑种在一起的情 ...
- 【01背包求方案数模板】洛谷 P1164 小A点菜
洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...
- 小木棍(洛谷-P1120)
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...
最新文章
- 机器人 瓷砖墙面清洗_瓷砖铺贴注意事项有哪些?
- dbms_DBMS | 并发控制
- 0基础半路转行学IT还来得及吗?
- ES启动报错 :could not fidn java; set JAVA_HOME or ensure java is in PATH
- MarkDown常用语法及word转MarkDown
- 【重点】Batch Normalization的诅咒
- OneProxy中间件生产使用经验视频分享
- c语言程序转python_C语言程序转换为Python语言
- html日期格式化标签,js日期格式化yyyymmdd
- 一名前端 Leader 的转正述职记录
- 完美卸载Visual Studio2015的方法汇总
- 什么是马尔可夫决策过程
- (十二)命令模式详解(故事版) .
- java判断object对象为不为空
- 思岚科技 引领高性价比激光雷达未来
- Doxygen使用教程
- 打开展讯日志采集界面-YlogActivity
- Python爬虫实战(六) 天猫(淘宝)评论爬取与分析实战
- 使用js在桌面上写一个倒计时器_现代课程网教学互动平台课件编辑器:计时器、倒计时器(图文版)...
- 视频转码工具 HDcinematics Convert 汉化版