第二题:B - 切绳子

题目如下图所示:


这道题目难度中等,但是有很多细节要注意。

分析:
1.首先数据类型问题, 1<n<1e18,这个显然超过了int的长度65535,需要使用big int 或者是long long 型进行定义变量,才不会报错。
2.包含 T 组数据,意味着需要处理多个,那么对存储空间就有要求,不能将每切一次的数据都保存,否则可能会存储超限。
3.每切一次,会分成[m/2],n-[m/2],那么只需要取其中长的那一段,一定是这两段中需要切的次数最多的,以此可以简化程序。
4.考虑使用迭代的方法,定义一个子函数作为切割绳子的处理,只需要返回处理的次数(即天数)。

思路:

  1. 这道题一开始的时候,我的思路是使用二叉树进行分割,左孩子为n-[m/2],右孩子为[m/2],这样交换的好处是可以构成一个完全二叉树(!注意不是满二叉树,除非绳子长度恰好是2^n,才会刚好构成满二叉树)。一直分下去,直到结点的值为1,构成叶结点,那么这颗二叉树的深度就是剪绳子需要的天数。但是这个想法由于水平不够,我没能想出实现的程序。因此考虑了第二种更为直接的思路。
  2. 第二种思路,是基于这个问题的数学表达式,抽象为数学问题,就是把一个数n不断地除以2,取整。那么我们想,2^n 这个数需要n次除法得到1,2 ^(n+1)这个数需要n+1次除法得到1,那么在这两个数之间的数字,得到1所需要的除法次数一定是在[n,n+1]内的,那么按题目所给的信息,除法后取整,这个次数必然是一个整数,那么只能是n+1。可以举例来验证这个思路:如 2 ^3=8,2 ^ 4=16,那么12需要几次呢,
    12-> 6 -> 3 -> 2 ->1 ,一共是4次,即12需要4次才能全部变成1 ,这里面只需要取两个数中最大的那个进行下一次剪操作。
    因此,思路简化为,比较绳子长度与2^ n进行比较,返回第一个比绳子长度大的2 ^n 的 n值。考虑边界,当绳子长度为1,不需要剪,因此n应该从0开始比较。

求解代码如下:

// 第二题:B - 切绳子
#include <queue>
#include <vector>
#include <cmath>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;int Getday(long long n)
{int day =1;while(n>1){long long m = n/2;n = max(m,n-m);day++;}return day;
}int main()
{int T;cin >> T;vector<int>res;long long n;for (int i = 0; i < T; i++){cin >> n;int day = Getday(n);res.push_back(day);}for (int i = 0; i < T; i++)cout << res[i] << endl;return 0;
}

2021中兴捧月神算师算法赛,4-24第一场,第二题:B - 切绳子,2021-4-27相关推荐

  1. 2017年中兴捧月神算师算法精英挑战赛之阿尔法勒克斯特派(AlphaNext派)-----进来加群咯

    所属门派: 阿尔法勒克斯特派(AlphaNext派) 门派技能: 图像处理与模式识别 门派描述: 图像处理,感知智能,让机器更加智能. 门派升级任务: 魔高一尺,道高一丈 阿尔法勒克斯特派初赛赛题 机 ...

  2. 中兴捧月神算师-算法精英挑战赛-比特派第一场

    一.跳高 难度:一颗星 题目描述: 在新的一年,牛牛想跳得更高.牛牛本身可以跳高 h h h米.同时牛牛有 n n n颗跳高弹,使用第 i i i 颗跳高弹可以使牛牛跳高高度增加 a i a_i ai ...

  3. 2020年中兴捧月算法大赛---埃德加考特派赛题解析及代码

    写在前面 三月份疫情期间在家闲来无事, 各大公司举办了很多的算法比赛, 但是大多是人工智能相关, 而我这个菜鸡又不会这方面的, 这时发现了中兴捧月的埃德加考特派赛道, 也就是数据库相关本科课设, 恰好 ...

  4. 2020中兴捧月算法赛道傅里叶派赛题菜鸡回顾

    最近抱着试水的心理参加了2020中兴捧月算法大赛傅里叶派赛题.从4.19号由旁观者转变为参赛者,到5.8号提交完成最后的文档和代码,前后算起来也有20天了.虽然自己比较菜,但毕竟是第一次参加这种比较正 ...

  5. 2020中兴捧月算法大赛-阿尔法(MOT)赛道--赛后总结

    比赛结束了,很荣幸拿到了中兴捧月算法大赛 MOT赛道 全国总决赛第二名的亚军奖杯,这估计也是我找到工作前最后一个比赛了,收获满满,下面算是自己给自己写的一个简单的赛后总结,做的比较粗糙,细节也就不多赘 ...

  6. 2023第十三届“中兴捧月”全球精英挑战赛今日正式启动

    3月31日,第十三届"中兴捧月"全球精英挑战赛正式启动! 由中兴通讯主办的"中兴捧月"大赛,自2009年首次举办至今,已走过13个年头,是广大高校师生的重点关注 ...

  7. 谈谈中兴捧月大赛决赛以及总结

    前言 四月份,在师兄的推荐下,报名参加了中兴捧月大赛.一开始只是为了混一个面笔试的资格(因为提交有效成绩即可免笔试),然后为了找一个简单的赛道,注册了几个号看了两三个赛道的题目.发现自己每个都不熟悉, ...

  8. Deepsort_V2 2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名

    2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名方案 初赛:多目标跟踪:指标MOTA和MOTP, 后期的大量实验证明检测算法相对于跟踪更重要. 数据集分析: 1.人群密集稀疏场景: 2.场景(白天 ...

  9. 中兴捧月大赛之方案探讨

    昨天参加完中兴捧月的决赛,感觉特别的糟糕.说实话,感觉中兴这次比赛搞得真的很奇葩!一是比赛搞得让我觉得公司对整个比赛的态度有点随意,有点不正式.二是比赛的赛题要求每天都在变,感觉不天天关注活动交流区, ...

  10. 2021年10月8日模拟赛(保龄奇遇记)

    本场考试考的很撇,值得反思,暴露出很多问题,望及时的拨乱反正,改掉操之过急,心态不稳定的缺点 2021年10月8日模拟赛(保龄奇遇记) 太菜了 T1 话中有话 有些词是多义词.这就导致同一句话可能有多 ...

最新文章

  1. subst将文件夹目录虚拟成虚拟磁盘
  2. 凯撒密码C语言去掉空格字符,凯撒密码的问题C语言
  3. 微服务架构 为什么需要配置中心
  4. CentOS7中设置.sh开机自启动(以后台启动geoserver为例)
  5. ARM 之四 各集成开发环境(IDE)说明(Keil、RVDS、ADS、DS-5、MDK)
  6. 《视频直播技术详解》系列之三:处理
  7. java音乐登陆界面_第四篇——Spring音乐登录界面设计及实现(C#)
  8. swagger2如何测试单个文件或者多文件上传
  9. 吃糖果hdu2502
  10. webshell文件下载器
  11. connect by prior id= pid start with id='1' 树结构查询
  12. 2018甲骨文云大会:如何用“灵全快”抢占市场?
  13. 51单片机的温湿度控制系统
  14. 2015小米校招技术类笔试题
  15. 摩托车头盔防护膜—给你不一样的安全感
  16. ubuntu20.04设置为中文
  17. (很全)英文外贸网站从建站到推广流程,外贸企业SEOer大菜鸟分享
  18. 统计项目工程文件总行数
  19. 莱赞多店铺运营管理系统提升Lazada泰国商家商品采集效率
  20. 双十二投影仪推荐 三分钟告诉你怎么挑选到称心如意的投影仪

热门文章

  1. 2048小游戏(Java)源码解析及源代码打包
  2. matlab 动平衡,运用labview和matlab混合编程实现转子动平衡的测试与控制
  3. meanshift算法图解
  4. 龙芯2h芯片不能进入pmon_基于龙芯2F架构的PMON分析与优化
  5. 计算机网络网线制作与测试结果,《计算机网络》网线制作实验报告.doc
  6. 用python证明采样定理_这一切都从指数函数开始(4)——采样定理
  7. db9针232接口波特率标准_RS232串口通信:接口定义、标准接法详细说明,一看就懂了...
  8. 精心收集17套电子课件
  9. 大数据平台搭建技术底座 四行业迎来新机遇
  10. Android Toast的立即取消与显示