ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

周报5.22—5.29

2022-05-30 00:32:19  阅读:164  来源: 互联网

标签:二分 起点 终点 路标 岩石 mid 5.22 5.29 周报


两道二分题:

在此之前我对于二分的理解还是比较浅薄的,或者说啥也不懂,以为二分就是对有序元素列的查找方法。但实际上二分的应用并不这么简单,比如根据二分法的有界性,我们可以对需要求解满足限制条件的极值的最大值或者最小值的问题应用二分。

 

例题1:

这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走M块岩石(不能移走起点和终点的岩石)。

 

输入格式以及样例:

第一行包含三个整数L,N,M分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。保证L≥1 且N≥M≥0。

接下来 N行,每行一个整数,第 i行的整数 Di​(0<Di​<L), 表示第 i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。

25 5 2

2

11

14

17

21

 

输出样例:

4(跳跃的最大距离)

 

如果不是这道题出现在二分专题里,我不会一开始就去往二分的方向思考,但实际上根据之前所说的应用场景,不难发觉这道题是在求最短距离的最大值,是典型的二分。

将每一次跳跃视作一次二分的查找,然后使得mid作为目前的最短距离,那么如果我们想要跳到的那块石头和我们所在石头的距离小于这个最短距离,根据题意就可以忽略,然后判断下一块石头是否大于mid,大于则将答案刷新,然后判断移去的石头数量有没有达到上限,超过了就让mid减小,反之让mid增大,循环之后就能解决问题。

 

例题2:

B 市和 T 市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的 “空旷指数”。

题目描述

现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。

输入格式

第 1 行包括三个数 L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。

第 2 行包括递增排列的 N 个整数,分别表示原有的 N 个路标的位置。路标的位置用距起点的距离表示,且一定位于区间 [0,L] 内。

输出格式

输出1行,包含一个整数,表示增设路标后能达到的最小“空旷指数”值。

 

输入范例:

101 2 1

0 101

 

对应输出:

51

 

这道题在上一题之后,有了经验倒也思路比较明确,就是判断每个路标与当前mid的大小关系,如果大于mid,就在中间添加路标,每隔一个mid添加一个,说起来挺容易,结果写半天还是有问题,看了下题解,边界的地方出了细节问题,之前是有想到,但想半天把自己搞晕了就开摆(),本质上和上一题一样,最后在经过路标总数和限制的对比,多了就将mid增大,反之减小。

标签:二分,起点,终点,路标,岩石,mid,5.22,5.29,周报
来源: https://www.cnblogs.com/riiichard/p/16325425.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有