C++小木棍题解代码(备用)
C++小木棍题解代码(备用)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int stk[80];
bool us[80];
int zc;
int cnt = 0;
int num;
int maxstk = 0;
int total=0;
void dfs(int finished,int nlong,int tlong,int dfsst){//已经解决了几个木棍、现在的木棍长度、目标木棍长度、从几号开始往下搜 if(finished*tlong==total){cout << tlong;exit(0);}else{if(nlong == tlong){dfs(finished+1,0,tlong,cnt-1);}else if(tlong-nlong<stk[0]){return ;}else{for(int a = dfsst;a>=0;a--){if(us[a]==false&&nlong+stk[a]<=tlong){us[a]=true;dfs(finished,nlong+stk[a],tlong,a-1);us[a]=false;if(nlong == 0||nlong + stk[a]==tlong)return;while(stk[a]==stk[a+1]){a--;}}}}}
}
int main(){cin >>zc;for(int a = 0;a<zc;a++){scanf("%d",&num);if(num<=50){stk[cnt]=num;cnt++;//cnt最后的值是有效的格数 total +=num;maxstk = max(maxstk,num);}} sort(stk,stk+cnt);for(int r = maxstk;r<=total/2;r++){//R是预定大木棍的长度 if(total%r==0){dfs(0,0,r,cnt-1);}}cout << total; return 0;
}
原文信息请见我的B站账号@大一路的红锦鲤
C++小木棍题解代码(备用)相关推荐
- P1120 小木棍题解
这题难度很唬人呀!!! 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 505050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们 ...
- 洛谷 P1120 小木棍 题解
这就是一道明显的爆搜题(人家洛谷也说了,,,),只是需要几个小小的优化,接下来为大家介绍一下: 1.将木棍先排个序(用处后面会讲),记住 长度>50 的要去掉 2.因为每一根的长度都不大于50, ...
- 题解 P1120 【小木棍 [数据加强版]】
题面 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编程帮 ...
- 题解 Sticks 小木棍
题解 Sticks 小木棍 题目描述: 每组数据给出N根小木棍,把它们拼接成若干根长度相等的木棍,求该长度的最小值. 题解: 该题就是dfs深搜+剪枝 ```cpp #include<iostr ...
- CodeVS3498 小木棍
题目 http://codevs.cn/problem/3498/ 题解 假设所有数的和为s,那么答案ans一定满足ans|s,因此从小到大枚举s的因子,验证所有木棍能否被分成s/ans组,每一组的和 ...
- 洛谷 小木棍(暴力+剪剪剪剪枝)
题目链接: 小木棍 - 洛谷 思路: 如果只考虑暴力,做法很简单,枚举所有可能的最终长度,都跑一遍dfs,取最小结果即可,本题难就难在大量的剪枝,具体见代码. 我的思路也是参考了大佬的博客:题解 P1 ...
- 小木棍(洛谷-P1120)
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度 ...
- AC日记——小木棍【数据加强版】 洛谷 P1120
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
- FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】
牛客 Verilog 刷题入门篇1~24 + 进阶篇1~34 题解代码,所有代码均能通过测试,配合视频讲解效果更佳.为避免内容冗余,本文只给出代码,部分题目给出必要说明. 很多题目本身出题有些问题,着 ...
最新文章
- iOS开源JSON解析库MJExtension
- 程序员的数学3 线性代数_在编程大佬眼中,线性代数到底是什么样的?
- java项目校内网的描述_[导入]校内网的错误信息
- 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
- android TextView 的setTextSize方法的使用
- WildFly 8与GlassFish 4 –选择哪个应用服务器
- SharePoint 站点结构及概念
- 欧莱雅收购AI公司ModiFace,想让自拍照“一键上妆”
- PullToRefresh使用详解(四)--利用回调函数实现到底加载
- go语言io reader_Golang io.TeeReader()用法及代码示例
- linux java不能运行命令,linux java不能运行命令
- 使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题
- Data Integration Introduction
- 澳洲留学生面经,Java后端,阿里、头条、百度、华为、微策略
- #10064 「一本通 3.1 例 1」黑暗城堡(spfa+乘法原理)
- php 将数字转为大写,将数字小写转为大写 php
- Linux安装iso镜像中的软件
- 优化嵌入式Linux的启动时间的秘密
- Matlab 一张图绘制在一个figure里,多张图绘制在一个figure里,和多张图分别绘制在一个figure里(多重子图)讲解及代码
- yolov5目标检测神经网络——损失函数计算原理