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

[蓝桥杯C++ 2024 国 B ] 立定跳远(二分)

题目描述

在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 n n n 个检查点 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots , a_n a1,a2,,an a i ≥ a i − 1 > 0 a_i \ge a_{i−1} > 0 aiai1>0。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时,小明可以自行再增加 m m m 个检查点让自己跳得更轻松。

在运动会前,小明制定训练计划让自己单次跳跃的最远距离达到 L L L,并且学会一个爆发技能可以在运动会时使用一次,使用时可以在该次跳跃时的最远距离变为 2 L 2L 2L。小明想知道, L L L 的最小值是多少可以完成这个项目?

输入格式

输入共 2 2 2 行。

第一行为两个正整数 n , m n,m n,m

第二行为 n n n 个由空格分开的正整数 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1,a2,,an

输出格式

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

输入输出样例 #1

输入 #1

5 3
1 3 5 16 21

输出 #1

3

说明/提示

【样例说明】

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

【评测用例规模与约定】

对于 20 % 20\% 20% 的评测用例,保证 n ≤ 10 2 n \le 10^2 n102 m ≤ 10 3 m \le 10^3 m103 a i ≤ 10 3 a_i \le 10^3 ai103
对于 100 % 100\% 100% 的评测用例,保证 2 ≤ n ≤ 10 5 2 \le n \le 10^5 2n105 m ≤ 10 8 m \le 10^8 m108 0 < a i ≤ 10 8 0 < a_i \le 10^8 0<ai108

解题核心思路是通过二分查找来确定小明单次跳跃的最小距离 L,同时考虑到他可以使用一次爆发技能将某一次跳跃距离变为 2L
对于每个候选的 L(即 mid),计算在不使用技能的情况下,需要添加多少个新检查点才能使所有跳跃距离不超过 L。
具体计算方法:对于每两个相邻的原检查点 a[i-1] 和 a[i],所需的新检查点数为 ceil((a[i] - a[i-1]) / mid) - 1。
如果总添加的检查点数不超过 m + 1,则说明当前 L 可能是可行的(因为可以用一次技能覆盖一个较长的跳跃)。
关键逻辑:通过允许添加 m + 1 个检查点(而不是 m 个),我们隐式地利用了一次技能的机会,因为技能可以将一次跳跃距离翻倍,相当于减少了一个需要添加检查点的间隔。

#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005],ans;bool check(int mid){int cnt=0;for(int i=1;i<=n;++i){cnt+=(int)ceil((a[i]-a[i-1])*1.0/mid)-1;}return cnt<=m+1;
}int main(){cin>>n>>m;for(int i=1;i<=n;++i)cin>>a[i];int l=1,r=a[n];while(l<r){int mid=l+r>> 1;if(check(mid))r=mid;else l=mid+1;}cout<<l;return 0;
}

相关文章:

  • Java五种方法批量处理List元素全解
  • 《异常链与统一异常处理机制设计:让 Java 项目更清晰可靠》
  • 根据jvm源码剖析类加载机制
  • 可视化提示词嵌入向量在训练过程中的变化:visualize_embedding_changes
  • 图像卷积OpenCV C/C++ 核心操作
  • SQL里几种JOIN连接
  • 【已解决】windows gitbash 出现CondaError: Run ‘conda init‘ before ‘conda activate‘
  • Zsh/Bash Conda设置延迟启动,启动速度优化
  • zookeeper 操作总结
  • 打破网络次元壁:NAT 穿透与内网打洞的 “Matrix 式” 通信革命
  • 关于uv 工具的使用总结(uv,conda,pip什么关系)
  • 力扣 秋招 打卡第一天 2025年5月28日 Java
  • 力扣热题100(附刷题表版)
  • 5.2.2二叉树的存储结构
  • TextIn OCR Frontend前端开源组件库发布!
  • LeetCode 136:只出现一次的数字 - 巧用异或运算的极致解法
  • TypeScript 中的剩余参数:灵活处理可变数量参数
  • Weather app using Django - Python
  • 多因素身份鉴别组合方案及应用场景
  • SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
  • 新乡高端网站建设/网上怎么做广告
  • 用asp制作一个简单的网站/seo技术教学视频
  • 网站文章系统/最近的电脑培训学校
  • 电商网页制作素材/吴忠seo
  • 网站建设进度计划/赣州网站建设公司
  • 优秀的网站设计/百度账号购买网站