洛谷[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 小木棍]相关推荐

  1. 洛谷 P1120 小木棍 题解

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

  2. 洛谷P1120小木棍

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

  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. Flask-RESTful之视图
  3. Linux系统详解 系统的启动、登录、注销与开关机
  4. asp.net mvc jquery ajax post,使用ASP.NET MVC在JS文件中设置jQuery的ajax url
  5. lnmp无法远程连接mysql_MySQL(一):设置root 可以远程连接MySQL
  6. ubuntu下安装hbase2.2.6
  7. Spring框架----Spring的bean的生命周期
  8. 15种音乐效果器合集 ArturiaFX Collection 2021.1 mac版
  9. C语言编程之学习putpixel画点
  10. 计算机网络标准化相关组织
  11. 【word论文排版教程2】论文章节安排及分节
  12. 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用·高级篇
  13. 关于NVIDIA显卡驱动更新后,没有NVIDIA 控制面板的解决办法
  14. iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020) ”解决办法
  15. Spring注解@Value在controller无法获取到值
  16. 彻底理解js的作用域链
  17. 成成你好呀笔记整理(知识点合集二)
  18. 2021-01-3 VBA利用企业邮箱自动发送邮件
  19. JavaWeb学习笔记(HTML语言)
  20. 21世纪新媒体CTO韩磊:移动新媒介融合之道

热门文章

  1. 企业号php开发 解析,成员关注企业号
  2. Syntax Error: TypeError: Cannot set property ‘parent‘ of undefined异常解决
  3. 单片机四位时钟电路设计方案汇总(四款电路图及程序分享) - 数字时钟电路图
  4. CV笔记6:图像边缘检测之一阶微分算子、二阶微分算子、Canny边缘检测(基于python-opencv实现)
  5. UVA 496 - Simply Subsets
  6. 七种不同类型的游戏测试技术
  7. Redis 实现优惠券秒杀、分布式锁、消费队列
  8. matlab中all和any用法
  9. Macbook air 2013安装windows7,解决鼠标键盘失灵问题的解决方法(集成USB3.0驱动的方法)
  10. Stylus—常见操作