肝了一天的题了,求过

题目描述

乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 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分吧

优化:

  1. 把小木棍从小到大排序

  1. 大棍枚举总和的因子

  1. 已组合的方式来枚举(禁重复)

  1. 小棍x若拼接失败,则全部x拼接失败

  1. 损招:

输入的后面加上一行

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小木棍相关推荐

  1. 洛谷[P1120 小木棍]

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

  2. 洛谷 P1120 小木棍 题解

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

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

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

  4. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  5. 2017提高组D1T1 洛谷P3951 小凯的疑惑

    洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...

  6. 洛谷 P2186 小Z的栈函数

    洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...

  7. (最小割)洛谷P1361 小M的作物

    洛谷P1361 小M的作物 思路: 这是一个两者取一的模型,将点集一分为二. 最小割在数值上等同于最大流.割去权值和最小的边,使图分成两部分,割下来的边权值和为最小割. 对于此题,先不考虑种在一起的情 ...

  8. 【01背包求方案数模板】洛谷 P1164 小A点菜

    洛谷 P1164 小A点菜 https://www.luogu.org/problemnew/show/P1164 题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆, ...

  9. 小木棍(洛谷-P1120)

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

最新文章

  1. 机器人 瓷砖墙面清洗_瓷砖铺贴注意事项有哪些?
  2. dbms_DBMS | 并发控制
  3. 0基础半路转行学IT还来得及吗?
  4. ES启动报错 :could not fidn java; set JAVA_HOME or ensure java is in PATH
  5. MarkDown常用语法及word转MarkDown
  6. 【重点】Batch Normalization的诅咒
  7. OneProxy中间件生产使用经验视频分享
  8. c语言程序转python_C语言程序转换为Python语言
  9. html日期格式化标签,js日期格式化yyyymmdd
  10. 一名前端 Leader 的转正述职记录
  11. 完美卸载Visual Studio2015的方法汇总
  12. 什么是马尔可夫决策过程
  13. (十二)命令模式详解(故事版) .
  14. java判断object对象为不为空
  15. 思岚科技 引领高性价比激光雷达未来
  16. Doxygen使用教程
  17. 打开展讯日志采集界面-YlogActivity
  18. Python爬虫实战(六) 天猫(淘宝)评论爬取与分析实战
  19. 使用js在桌面上写一个倒计时器_现代课程网教学互动平台课件编辑器:计时器、倒计时器(图文版)...
  20. 视频转码工具 HDcinematics Convert 汉化版

热门文章

  1. 公式编辑器打的公式能改变颜色吗?
  2. android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效
  3. CTex和WinEdt的安装以及中国科学期刊模板的打开方式
  4. 面试中出现频率较高的英语问题及精彩回答
  5. 录音完成并对接百度云进行识别
  6. 官宣:3月27日的PMP考试,确定延期至6月、7月
  7. Java Lambda表达式的箭头理解总结
  8. 多伦多大学计算机人工智能,解读加拿大人工智能专业
  9. Android加载动画
  10. C语言:用指针法输入12个整数,然后按每行4个数输出