当前位置: 首页 > backend >正文

[蓝桥杯 2024 国 B] 立定跳远

问题描述

在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 n 个检查点 a1,a2,...,an且 ai≥ai−1>0。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时,小明可以自行再增加 m 个检查点让自己跳得更轻松。在运动会前,小明制定训练计划让自己单次跳跃的最远距离达到 L,并且学会一个爆发技能可以在运动会时使用一次,使用时可以在该次跳跃时的最远距离变为 2L。小明想知道,L 的最小值是多少可以完成这个项目?

输入格式

输入共 2 行。第一行为两个正整数 n,m。第二行为 nn个由空格分开的正整数 a1,a2,...,an​。

输出格式

输出共 1 行,一个整数表示答案。

样例输入

5 3
1 3 5 16 21

样例输出

3

样例说明

增加检查点 10,13,19,因此每次跳跃距离为 2,2,5,3,3,3,2,在第三次跳跃时使用技能即可。

评测用例规模与约定

对于 20% 的评测用例,保证 n≤10^2,m≤10^3,ai≤10^3。 对于 100%的评测用例,保证 2≤n≤10^5,m≤10^8,0<ai≤10^8。

解题思路:

从原点开始起跳到第一个检查点,这段距离别忘;一次爆发可看做多给一次检查点(因为爆发能跳2L,就相当于在2L中间插个检查点,分成了两段L)。 用二分来查找最小的能满足给定m+1(+1为一次爆发)的L(即mid)。

怎么判断是否满足m+1:

①先求出在选定的mid的情况下,完成项目所需的检查点数requireM。 ②再判断所需的检查点数requireM是否满足<=m+1 ③若满足,再使right=mid-1,减小mid,看能否取更小 ④若不满足,则使left=mid+1,增大mid,使满足 ⑤直到找到最小的mid (即L)

计算完成项目所需的检查点数requireM:

通过计算每两个相邻检查点之间的距离d可以划分为多少段长度为L的段落(向上取整),即(d+mid-1)/mid(在数学中与ceil( d/mid )等价), 这两个检查点间所需的检查点数即为段落数-1即可,为(d+mid-1)/mid-1,即(d-1)/mid。

代码:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt()+1;//爆发可以看作多给一个检查点int[] a=new int[n];for(int i=0;i<n;i++) {a[i]=sc.nextInt();}int[] distance=new int[n];distance[0]=a[0];//注意!!!从原点开始跳到第一个检查点的距离for(int i=0;i<n-1;i++) {distance[i+1]=a[i+1]-a[i];}int left=1;int right=(int)1e8;int answer=0;while(left<=right) {int mid=left+(right-left)/2;long requireM=0;for(int d:distance) {requireM+=(d-1)/mid;//d/mid的向上取整再-1,d/mid表示距离d能划分为多少段长度为mid段落,再-1即为需增加的检查点}if(requireM<=m) {answer=mid;right=mid-1;}else {left=mid+1;}}System.out.println(answer);sc.close();}}

http://www.xdnf.cn/news/12513.html

相关文章:

  • Linux中shell编程表达式和数组讲解
  • 使用C/C++和OpenCV实现图像拼接
  • Python绘图库及图像类型之特殊领域可视化
  • CAU人工智能class7 迁移学习
  • JAVA-什么是JDK?
  • 【动手学深度学习】2.6. 概率
  • VTK 显示文字、图片及2D/3D图
  • rocketmq 之 DLeger集群,启动ACL 1.0,集成rocektmq-mqtt实践
  • pe文件结构(TLS)
  • window安装docker\docker-compose
  • 每日算法刷题Day24 6.6:leetcode二分答案2道题,用时1h(下次计时20min没写出来直接看题解,节省时间)
  • Java线程卡死问题定位
  • 商业卫星推进与控制系统电源芯片的国产替代研究
  • 智谱清言沉思智能体,天工智能体,agenticSeek等AI Agent测试记录
  • 黄晓明新剧《潜渊》定档 失忆三面间谍开启谍战新维度
  • 一些免费的大A数据接口库
  • LLaMA-Factory的5种推理方式总结
  • 使用vtk8.2.0加载dicom图像
  • 界面开发框架DevExpress XAF实践:集成.NET Aspire后如何实现数据库依赖?
  • 【AUTOSAR COM】E2E的不同profiles的含义以及应用
  • 批量文件改名具体操作方案
  • USB扩展器与USB服务器的2个主要区别
  • 机器人编程界面
  • CMake 为 Debug 版本的库或可执行文件添加 d 后缀
  • 第五讲——一元函数微分学的几何应用
  • 飞马LiDAR500雷达数据预处理
  • LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
  • Python基础语法全解:从入门到精通的简明指南
  • 初始结构体,整型提升及操作符的属性
  • RockyLinux9.6搭建k8s集群