牛客网-----跳石头

题目描述:

一年一度的“跳石头”比赛又要开始了!
这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。
为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走M块岩石(不能移走起点和终点的岩石)。


 输入描述:

输入文件第一行包含三个整数L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。
接下来 N行,每行一个整数,第i行的整数Di(0 < Di< L)表示第i块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。

输出描述:

输出文件只包含一个整数,即最短跳跃距离的最大值。


示例1:

输入 :


25 5 2 

11

14

17

21

输出:   

4

说明:

将与起点距离为2和14的两个岩石移走后,最短的跳跃距离为4(从与起点距离17的岩石跳到距离21的岩石,或者从距离21的岩石跳到终点)。


二分查找算法板子(整数):

1、左面模板

//左面模板
int bsearch_1(int l, int r)
{while (l < r){int mid = l + r >> 1;if (check(mid)) r = mid;else l = mid + 1;}return l;
}

2、右面模板

//右面模板
int bsearch_2(int l, int r)
{while (l < r){int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}return l;
}

 根据样例,图解如下:

 根据如上图解,我们可以 看出根据  d  的增加,移动石头次数 m 也是逐渐增加的,所以d = 5不行,那么说明d > 5 的 情况都是不行的,所以答案是d = 4,移动次数m = 2


代码思路: 

1、写好对应的数组
2、确定好二分的板子
3、写好check函数

AC代码如下: 

#include<iostream>
#include<algorithm>
#include<cstring>using namespace std;const int N  = 50010;
int L,n,m;
int a[N];bool check(int x)
{//cnt,表示移动石头的次数,last 表示指向没有移动过的石头int cnt = 0,last  = 0;for(int i=1;i<=n;i++){//判断一下两个石头之间的距离是否小于这个最短跳跃距离if(a[i] - a[last] < x){cnt ++; //移动石头次数增加}else{last = i; //last永远指在没被挪动的石头上面}if(cnt > m) return false;}return true;
}int main()
{scanf("%d %d %d",&L,&n,&m);//因为算是起点和终点的话是N+2个数for(int i=1;i<=n;i++) scanf("%d",&a[i]);a[n+1] = L; //终点int l = 1,r = L;/*这里为啥不用左模板 是因为 在一个有序的数组下,我们想要找到最长的那个一定是在最右边。*/while(l < r){int mid = l + r + 1 >> 1;if(check(mid)) l = mid;else r = mid - 1;}cout << l << endl;return 0;
}

如果last那块不懂的话大家可以拿题目给的样例去手动模拟一下,好好理解代码的过程,感谢观看~

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

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

相关文章

第9章-网络设备基本调试

1. 网络连通性测试 ping命令 定义&#xff1a;基于ICMP协议开发的应用程序&#xff0c;检测网络连通性&#xff1b; 功能&#xff1a; ① 检测网络连接的状态&#xff1b; ② 检测目标计算机是否在线&#xff1b; ③ 定位故障排除&#xff1b; ④ 检测网络延迟和丢包情况&#…

AI智能分析网关V4车辆检测算法及车辆结构化数据在车辆智能管控中的应用

AI边缘计算智能分析网关V4车辆检测、车牌识别算法融合了ORC识别、云计算、计算机视觉、大数据检索等多种技术&#xff0c;可将运动中的机动车牌照从复杂的背景中提取并识别出来&#xff0c;通过车牌提取、图像预处理、特征提取、车牌字符识别等流程&#xff0c;识别出车辆牌号、…

视频监控平台EasyCVR增加fMP4流媒体视频格式及其应用场景介绍

近期我们在视频监控管理平台EasyCVR系统中新增了HTTP-FMP4播放协议&#xff0c;今天我们就来聊聊该协议的特点和应用。 fMP4&#xff08;Fragmented MPEG-4&#xff09;是基于MPEG-4 Part 12的流媒体格式&#xff0c;是流媒体的一项重要技术&#xff0c;因为它能通过互联网传送…

Linux异宠动物园,平面设计篇,Linux平台常见的开源平面设计软件

Linux异宠动物园&#xff0c;平面设计篇&#xff0c;分布介绍视频&#xff0c;讲解了Linux平台常见的开源平面设计软件。如Inkscape&#xff0c;Gimp&#xff0c;Krita&#xff0c;Scribus&#xff0c;并介绍了平面设计行业早期的历史和Aldus公司的历史。 视频请见&#xff1a…

Docker数据管理-容器数据卷

Docker数据管理-容器数据卷 文章目录 Docker数据管理-容器数据卷什么是容器数据卷使用数据卷安装mysql具名挂载和匿名挂载 什么是容器数据卷 数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过文件系统&#xff0c;可以提供很多专用的特性&#xff1a; 数据卷可以在容器之…

Python对分段函数求导+绘制位移s-t、速度v-t、加速度a-t曲线

import matplotlib.pyplot as plt import numpy as np import sympy as spfrom sympy.utilities.lambdify import lambdify #-----------------------------连续数值离散化-便于绘图------------------------------------ def Curve_values(piecewise_function):derivative_fun…

C语言float 类型数如何与0值⽐较?

一、问题 写出 float a 与“0值”⽐较的if语句。 二、解答 1、问题分析与解答 ⼀般地&#xff0c;如果⽤证判断⼀个数值型变量(short、int、long 等)&#xff0c;应该⽤ if(a0)&#xff0c;表示的含义是a与0进⾏“数值”上的⽐较; 但 float 型变量并不精确&#xff0c;不能直…

字符串冲刺题(算法村第十二关黄金挑战)

最长公共前缀 14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow"…

保姆级CISP报考攻略,让你不再迷茫

信息安全领域越来越火&#xff0c;想要在这个行业闯出一片天&#xff1f;CISP认证就是你的“敲门砖”&#xff01;想知道如何顺利考取这个超牛的证书吗&#xff1f;下面就带你一起探索保姆级CISP报考流程&#xff01;&#x1f389; &#x1f393;报考条件&#x1f393; 学历专业…

聚观早报 | 苹果将开放第三方NFC支付;华为P70系列参数曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月23日消息 苹果将开放第三方NFC支付 华为P70系列参数曝光 Celestiq已正式开始量产 岚图汽车官宣与华为合作 美…

C# CefSharp 根据输入日期段自动选择日期

1&#xff0c;前言 搞这个Demo整整搞几天通宵&#xff0c;爆肝了。后做的效果出来&#xff0c;还是不错的。给小伙伴看看效果图。 2, 遇到的问题 日期之间相差多少个月数。开始时间框点击对应月份要点击多少次&#xff0c;结束时间框点击对应月份要点击多少次Xpath获取问题。…

Bit Extraction and Bootstrapping for BGV/BFV

参考文献&#xff1a; [GHS12] Gentry C, Halevi S, Smart N P. Better bootstrapping in fully homomorphic encryption[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 1-16.[AP13] Alperin-Sheriff J, Pe…