[蓝桥杯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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINUX530 rsync定时同步 环境配置

rsync定时代码同步 环境配置 关闭防火墙 selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUXdisable设置主机名 hostnamectl set-hostname code hostnamectl set-hostname backup设置静态地址 cd /etc/sysconfi…

鸿蒙OSUniApp结合机器学习打造智能图像分类应用:HarmonyOS实践指南#三方框架 #Uniapp

UniApp结合机器学习打造智能图像分类应用&#xff1a;HarmonyOS实践指南 引言 在移动应用开发领域&#xff0c;图像分类是一个既经典又充满挑战的任务。随着机器学习技术的发展&#xff0c;我们现在可以在移动端实现高效的图像分类功能。本文将详细介绍如何使用UniApp结合Ten…

【Redis】大key问题详解

目录 1、什么是大key2、大key的危害【1】阻塞风险【2】网络阻塞【3】内存不均【4】持久化问题 3、如何发现大key【1】使用内置命令【2】使用memory命令&#xff08;Redis 4.0&#xff09;【3】使用scan命令【4】监控工具 4、解决方案【1】拆分大key【2】使用合适的数据结构【3】…

redis核心知识点

Redis是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符串)、Hash(哈希)、 Lis…

vscode不满足先决条件问题的解决——vscode的老版本安装与禁止更新(附安装包)

目录 起因 vscode更新设置的关闭 安装包 结语 起因 由于主包用的系统是centos的&#xff0c;且版本有点老了&#xff0c;再加上vscode现在不支持老版本的&#xff0c;这对主包来说更是雪上加霜啊 但是主包看了网上很多教程&#xff0c;眼花缭乱&#xff0c;好多配置要改&…

如何成为一名优秀的产品经理(自动驾驶)

一、 夯实核心基础 深入理解智能驾驶技术栈&#xff1a; 感知&#xff1a; 摄像头、雷达&#xff08;毫米波、激光雷达&#xff09;、超声波传感器的工作原理、优缺点、融合策略。了解目标检测、跟踪、SLAM等基础算法概念。 定位&#xff1a; GNSS、IMU、高精地图、轮速计等定…

【ISAQB大纲解读】信息隐藏指的是什么

在软件架构中&#xff0c;信息隐藏&#xff08;Information Hiding&#xff09; 是核心设计原则之一&#xff0c;由 David Parnas 在 1972 年提出。它强调通过限制对模块内部实现细节的访问&#xff0c;来降低系统复杂度、提高可维护性和可扩展性。在 ISAQB 的学习目标&#xf…

网页前端开发(基础进阶2--JS)

前面学习了html与css&#xff0c;接下来学习JS&#xff08;JavaScript与Java无关&#xff09;。 web标准&#xff08;网页标准&#xff09;分为3个部分&#xff1a; 1.html主要负责网页的结构&#xff08;页面的元素和内容&#xff09; 2.css主要负责网页的表现&#xff08;…

完全移除内联脚本

说明 日期&#xff1a;2025年5月9日。 内联脚本给跨站脚本攻击&#xff08;XSS&#xff09;留了条路。 示例 日期&#xff1a;2025年5月9日。 如下网页文件a.html&#xff1a; <!-- 内联脚本块 --> <script> function handleClick{ alert("Hello")…

[蓝桥杯]约瑟夫环

约瑟夫环 题目描述 nn 个人的编号是 1 ~ nn&#xff0c;如果他们依编号按顺时针排成一个圆圈&#xff0c;从编号是 1 的人开始顺时针报数。 &#xff08;报数是从 1 报起&#xff09;当报到 kk 的时候&#xff0c;这个人就退出游戏圈。下一个人重新从 1 开始报数。 求最后剩…

电子电气架构 --- 如何应对未来区域式电子电气(E/E)架构的挑战?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

isp中的 ISO代表什么意思

isp中的 ISO代表什么意思 在摄影和图像信号处理&#xff08;ISP&#xff0c;Image Signal Processor&#xff09;领域&#xff0c;ISO是一个用于衡量相机图像传感器对光线敏感度的标准参数。它最初源于胶片摄影时代的 “国际标准化组织&#xff08;International Organization …

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一&#xff1a;整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…

迈向分布式智能:解析MCP到A2A的通信范式迁移

智能体与外部世界的桥梁之言&#xff1a; 在深入探讨智能体之间的协作机制之前&#xff0c;我们有必要先厘清一个更基础的问题&#xff1a;**单个智能体如何与外部世界建立连接&#xff1f;** 这就引出了我们此前介绍过的 **MCP&#xff08;Model Context Protocol&…

Android Studio 配置之gitignore

1.创建或编辑.gitignore文件 在项目根目录下检查是否已有.gitignore文件。如果没有&#xff0c;创建一个新文件&#xff0c;命名为.gitignore&#xff08;注意文件名前有个点&#xff09;。 添加忽略规则&#xff1a;在.gitignore中添加以下内容&#xff1a; 忽略整个 .idea …

算法:二分查找

1.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 二分查找算法要确定“二段性”&#xff0c;时间复杂度为O(lonN)。为了防止数据溢出&#xff0c;所以求mid时要用防溢出的方式。 class Solution { public:int search(vector<int>& nums, int tar…

day62—DFS—太平洋大西洋水流问题(LeetCode-417)

题目描述 有一个 m n 的矩形岛屿&#xff0c;与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界&#xff0c;而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights &#xff0c; hei…

Langchaine4j 流式输出 (6)

Langchaine4j 流式输出 大模型的流式输出是指大模型在生成文本或其他类型的数据时&#xff0c;不是等到整个生成过程完成后再一次性 返回所有内容&#xff0c;而是生成一部分就立即发送一部分给用户或下游系统&#xff0c;以逐步、逐块的方式返回结果。 这样&#xff0c;用户…

自动驾驶与智能交通:构建未来出行的智能引擎

随着人工智能、物联网、5G和大数据等前沿技术的发展&#xff0c;自动驾驶汽车和智能交通系统正以前所未有的速度改变人类的出行方式。这一变革不仅是技术的融合创新&#xff0c;更是推动城市可持续发展的关键支撑。 一、自动驾驶与智能交通的定义 1. 自动驾驶&#xff08;Auto…

数据基座觉醒!大数据+AI如何重构企业智能决策金字塔(下)

1. 数据架构的量子跃迁 1.1 从线性堆叠到立体网络 传统六层架构正在经历基因重组。某智能家居企业将数据流转路径重构为三维拓扑网络后&#xff0c;新品研发周期从18个月压缩至9个月。这个改造的核心在于打破数据层间的物理隔离&#xff0c;让原始数据流能直接触达决策中枢。…