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++小木棍题解代码(备用)相关推荐

  1. P1120 小木棍题解

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

  2. 洛谷 P1120 小木棍 题解

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

  3. 题解 P1120 【小木棍 [数据加强版]】

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

  4. 题解 Sticks 小木棍

    题解 Sticks 小木棍 题目描述: 每组数据给出N根小木棍,把它们拼接成若干根长度相等的木棍,求该长度的最小值. 题解: 该题就是dfs深搜+剪枝 ```cpp #include<iostr ...

  5. CodeVS3498 小木棍

    题目 http://codevs.cn/problem/3498/ 题解 假设所有数的和为s,那么答案ans一定满足ans|s,因此从小到大枚举s的因子,验证所有木棍能否被分成s/ans组,每一组的和 ...

  6. 洛谷 小木棍(暴力+剪剪剪剪枝)

    题目链接: 小木棍 - 洛谷 思路: 如果只考虑暴力,做法很简单,枚举所有可能的最终长度,都跑一遍dfs,取最小结果即可,本题难就难在大量的剪枝,具体见代码. 我的思路也是参考了大佬的博客:题解 P1 ...

  7. 小木棍(洛谷-P1120)

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

  8. AC日记——小木棍【数据加强版】 洛谷 P1120

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

  9. FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】

    牛客 Verilog 刷题入门篇1~24 + 进阶篇1~34 题解代码,所有代码均能通过测试,配合视频讲解效果更佳.为避免内容冗余,本文只给出代码,部分题目给出必要说明. 很多题目本身出题有些问题,着 ...

最新文章

  1. iOS开源JSON解析库MJExtension
  2. 程序员的数学3 线性代数_在编程大佬眼中,线性代数到底是什么样的?
  3. java项目校内网的描述_[导入]校内网的错误信息
  4. 仍然报错_详解oracle经典报错:ORA-04030排错思路和解决方法
  5. android TextView 的setTextSize方法的使用
  6. WildFly 8与GlassFish 4 –选择哪个应用服务器
  7. SharePoint 站点结构及概念
  8. 欧莱雅收购AI公司ModiFace,想让自拍照“一键上妆”
  9. PullToRefresh使用详解(四)--利用回调函数实现到底加载
  10. go语言io reader_Golang io.TeeReader()用法及代码示例
  11. linux java不能运行命令,linux java不能运行命令
  12. 使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题
  13. Data Integration Introduction
  14. 澳洲留学生面经,Java后端,阿里、头条、百度、华为、微策略
  15. #10064 「一本通 3.1 例 1」黑暗城堡(spfa+乘法原理)
  16. php 将数字转为大写,将数字小写转为大写 php
  17. Linux安装iso镜像中的软件
  18. 优化嵌入式Linux的启动时间的秘密
  19. Matlab 一张图绘制在一个figure里,多张图绘制在一个figure里,和多张图分别绘制在一个figure里(多重子图)讲解及代码
  20. yolov5目标检测神经网络——损失函数计算原理

热门文章

  1. 【《机器人技术》复习】
  2. VINS Fusion GPS融合部分
  3. hacking 麦步手表之(4)制作一个大数字表盘xzy-big-number
  4. Spring Cloud入门 -- Eureka服务注册与发现(Hoxton.SR5版)
  5. Installation via USB is disabled
  6. 计算机一级MS Office知识点归纳整理
  7. 远程桌面协议报错0xd06解决方案
  8. 第六章网络应用技术(比较简单)
  9. 【实用工具】Chrome浏览器英文翻译插件推荐:Google翻译
  10. 亚马逊 CTO 预测2021:八大技术趋势改变世界