洛谷[P1120 小木棍]
洛谷[P1120 小木棍]
题目:
思路:
枚举小木棒可能的长度,从数组最大值开始枚举,这个值能被总长度整除才是可行的
在使用dfs枚举小木棒的每一种可能,如果不可能就找下一个可能的长度开始枚举
注意不可能的情况就直接剪枝,不然会超时
代码:
#include<bits/stdc++.h>
using namespace std;
int arr[100];
int Len=0;
int BK[100]={0};//木棍状态
int len_club, cnt;
// 目标长度 根数 上次循环 当前长度 当前根数
bool dfs(int mark,int ans,int cont){if(ans==len_club){return dfs(1,0,cont+1);}if(cont==cnt){return true;}for(int i=mark;i<=Len;i++){if(BK[i]==0&&arr[i]+ans<=len_club){BK[i]=1;if(dfs(i+1,ans+arr[i],cont)) return true;BK[i]=0;if(ans==0||ans+arr[i]==len_club)//当前方案能够符合当前根数,但是后面的就拼不了了,拆前面的return false;while(arr[i]==arr[i+1])//arr[i]不符合 arr[i+1]一定不符合i++;}}return false;
}bool Max(int a,int b){return a>b;
}
int main(){int sum=0;scanf("%d",&Len);for(int i=1;i<=Len;i++){scanf("%d",&arr[i]);sum+=arr[i];}sort(arr+1,arr+Len+1,Max);//从大到小排序for(int i=arr[1];i<=sum;i++){//枚举每跟的长度while(sum%i!=0) ++i;int cont=sum/i;//长度为i的木棍的根数len_club=i,cnt=cont;if(dfs(1,0,0)){//如果能合成cont根长度为i的木棍,就直接跳出printf("%d",i);break;}}return 0;
}
洛谷[P1120 小木棍]相关推荐
- 洛谷 P1120 小木棍 题解
这就是一道明显的爆搜题(人家洛谷也说了,,,),只是需要几个小小的优化,接下来为大家介绍一下: 1.将木棍先排个序(用处后面会讲),记住 长度>50 的要去掉 2.因为每一根的长度都不大于50, ...
- 洛谷P1120小木棍
肝了一天的题了,求过 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度 ...
- 洛谷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. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...
最新文章
- 【汇总记忆:命令、语法、函数、等】
- Flask-RESTful之视图
- Linux系统详解 系统的启动、登录、注销与开关机
- asp.net mvc jquery ajax post,使用ASP.NET MVC在JS文件中设置jQuery的ajax url
- lnmp无法远程连接mysql_MySQL(一):设置root 可以远程连接MySQL
- ubuntu下安装hbase2.2.6
- Spring框架----Spring的bean的生命周期
- 15种音乐效果器合集 ArturiaFX Collection 2021.1 mac版
- C语言编程之学习putpixel画点
- 计算机网络标准化相关组织
- 【word论文排版教程2】论文章节安排及分节
- 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用·高级篇
- 关于NVIDIA显卡驱动更新后,没有NVIDIA 控制面板的解决办法
- iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020) ”解决办法
- Spring注解@Value在controller无法获取到值
- 彻底理解js的作用域链
- 成成你好呀笔记整理(知识点合集二)
- 2021-01-3 VBA利用企业邮箱自动发送邮件
- JavaWeb学习笔记(HTML语言)
- 21世纪新媒体CTO韩磊:移动新媒介融合之道
热门文章
- 企业号php开发 解析,成员关注企业号
- Syntax Error: TypeError: Cannot set property ‘parent‘ of undefined异常解决
- 单片机四位时钟电路设计方案汇总(四款电路图及程序分享) - 数字时钟电路图
- CV笔记6:图像边缘检测之一阶微分算子、二阶微分算子、Canny边缘检测(基于python-opencv实现)
- UVA 496 - Simply Subsets
- 七种不同类型的游戏测试技术
- Redis 实现优惠券秒杀、分布式锁、消费队列
- matlab中all和any用法
- Macbook air 2013安装windows7,解决鼠标键盘失灵问题的解决方法(集成USB3.0驱动的方法)
- Stylus—常见操作