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

article/2025/10/13 6:22:11

第二题: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;
}

http://chatgpt.dhexx.cn/article/eGlxFspc.shtml

相关文章

中兴捧月算法-切绳子

中兴捧月算法-切绳子 题目描述 来源&#xff1a;牛客网 示例一&#xff1a;

中兴捧月比赛DIJKSTRA派算法说明

因为文章包含太多公式&#xff0c;无法复制&#xff0c;所以只能截图 我现在不知道怎么传源码&#xff0c;代码的话如果有人要&#xff0c;留言QQ 输出的次优解路径为&#xff1a; S->N2->N4->N5->N3->N7->N8->N14->N13->N12-…

2019中兴捧月·总决赛心得

2019中兴捧月总决赛心得 原文链接&#xff1a;https://hey-yahei.cn/2019/05/25/zte_challenge_final/ 赛题背景 与初赛类似&#xff0c;不过初赛更多关注的是加速&#xff0c;而总决赛更关注的是压缩。 原始模型是一个简单的3x112x112输入大小的resnet18&#xff0c;人脸识…

2020年中兴捧月傅里叶派决赛题目

目录 题目&#xff1a; 模型建立 题目分析 注意的小问题 计算结果 代码 模型改进和精细预测 写在最后 题目&#xff1a; 假设&#xff1a; 病毒正在一个居民总数为N100,000, 的城市里扩散。在我们研究的时间段内&#xff08;300天&#xff09;&#xff0c;没有新生儿…

2022中兴捧月算法挑战赛(RAW图像去噪)——初赛到决赛总结与反思

文章目录 1. 初赛经历&炼丹详情1.1 初赛经历1.2 炼丹详情 2、复赛经历&反思与总结2.1 复赛经历2.2 复赛反思 3、决赛经历&反思与总结3.1 决赛题目3.2 决赛思路总结3.3 冠军方案记录3.4 决赛经历3.5 决赛反思 1. 初赛经历&炼丹详情 1.1 初赛经历 最后分数57.2…

2020中兴捧月算法大赛迪杰斯特拉赛道初赛题解

目录 摘要1 程序中使用的数据结构1.1 几个基本数据类型1.2 车道(Lane)1.3 道路(Road)1.4 站点(Station)1.5 货物(Goods)1.6 系统资源(SystemResource)1.7 物流系统(LogisticsSystem) 2 算法思路2.1 初赛初版&#xff1a;路由表、深度优先搜索、路径惩罚2.1.1 搜索策略2.1.2 路径…

中兴捧月营销精英挑战赛回顾

先上图 为期四天的比赛结束了&#xff0c;把这次比赛的收获做一个总结和分享。希望能帮上后面有需要的同学吧。 主要内容分为比赛流程、决赛内容和心得体会三部分。 一.比赛流程 比赛流程分为三部分&#xff0c;初赛、复赛和决赛。初赛开始需要每位同学从瑞伊、加勒斯和奥格…

2023中兴捧月图像赛道-任意尺度盲超分初赛第三方案

任意尺度盲超分-初赛第三方案 吐槽篇方案篇一、左脚踩右脚二、梯度攻击 建议篇 吐槽篇 正文内容.正式讲述方案之前&#xff0c;容我先吐槽两句&#xff0c;真tm的是比赛&#xff0c;纯纯ex人。学历厂就别打着以赛招聘的口号&#xff0c;要985计算机的直接去他们学校里宣讲嘛&am…

中兴捧月之旅

上个月底&#xff0c;我怀着激动的心情来到古都西安参加了第十一届中兴捧月算法大赛的全国总决赛&#xff0c;因为这是我第一次参加的线下封闭开发的现场竞赛&#xff0c;特以此文记录这趟快乐的西安之旅。 中兴捧月是中兴通讯公司举办的大型算法比赛&#xff0c;今年共有6大赛…

2020中兴捧月算法大赛——傅里叶赛道 第1名方案

大家好&#xff0c;我是轶扬。 最近我在总结研究生阶段参与的一些项目和比赛&#xff0c;翻到了2020年参加的中兴捧月算法大赛&#xff0c;题目很有意思&#xff0c;解法上也有一些有趣的创新&#xff0c;所以拿出来特别记录一下。 中兴捧月算法大赛是中兴通讯公司主办的算法赛…

2023 中兴捧月算法挑战赛-自智网络-参赛总结

“中兴捧月”是由中兴通讯面向在校大学生举办的全球性系列赛事活动&#xff0c;致力于培养学生建模编程、创新、方案策划和团队合作能力。今年是在学校的宣传下了解到比赛&#xff0c;最初抱着学习的态度报名了比赛&#xff0c;最终进入了决赛&#xff0c;完成了封闭的开发与赛…

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

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

我得重新集结部队(模拟)

思路&#xff1a;感觉问题不大&#xff0c;不知道为啥一直WA WA代码&#xff1a; package 练习; import java.util.*; import java.io.*; import java.lang.*; public class Main{public static void main(String[] args) {Scanner scnew Scanner (System.in);int nsc.nextInt…

攻防演习紫队第一篇之介绍和组织

文章目录 0x01 什么是紫队0x02 如何组织攻防实战攻防演习一、实战攻防演习组织要素二、实战攻防演习组织形式三、实战攻防演习组织关键 摘抄 0x01 什么是紫队 ● 紫队&#xff0c;一般是指网络实战攻防演习中的组织方。 ● 紫队是在实战攻防演习中&#xff0c;以组织方角色&am…

java毕业设计民兵管理系统(附源码、数据库)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

哨兵数据的介绍

转载&#xff1a;[哨兵数据的介绍(http://www.spacemagazines.org/h-nd-193.html) “哨兵”卫星家族概览 据欧洲航天局网站2014年5月28日的报道&#xff0c;欧洲哨兵&#xff0d;1A&#xff08;Sentinel&#xff0d;1A&#xff09;卫星尽管还没有正式工作&#xff0c;但已为波…

创建Dota游戏中的兵营类(Barrack),创建3个兵营,通过控制台为每个兵营定义兵营名称,并指定该兵营需要创建的士兵人数。

上面图标里的这个类是创建的兵营类,下面的代码是兵营类的测试类: package com.xjc; /任务一&#xff0c; 1.创建Dota游戏中的兵营类&#xff08;Barrack&#xff09;&#xff0c;该类中有一个类成员变量count&#xff08;类属性&#xff09;、一个实例变量name和另一个实例变…

敌兵布阵问题

一 问题描述 A 国在海岸线沿直线部署了 N 个工兵营地&#xff0c;C 国通过先进的监测手段&#xff0c;对 A 国的每个工兵营里的人数都掌握的一清二楚&#xff0c;每个工兵营的人数都可能发生变动&#xff0c;可能增加或减少若干人数。 二 输入和输出 1 输入 第 1 行包含一个…

红蓝对抗-红队打点的那些事

红蓝对抗-红队打点的那些事 攻防演练中作为攻击方&#xff0c;效率很重要&#xff0c;例如2019 BCS红队行动议题&#xff1a; RedTeam-BCS 半自动化的资产收集 域名/IP/需要交互的系统 当拿到目标的时候&#xff0c;首先需要利用天眼查获取目标企业结构&#xff0c;有子公司…

如何快速搭建红队练习靶场

使用项目:Vulhub Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。 前期准备 安装docker curl -s https://get.docker.com/ | sh