1 条题解
-
1
首先看一下数据范围,发现暴力枚举时间肯定会炸,所以这里我们要用到一个算法——二分答案。
什么叫二分答案呢?
顾名思义,二分答案就是对答案二分。
把所有可能的答案列出来,将答案带到问题里,看是否成立,成立的话,此时带入的答案就是对的。
但是一一枚举每一个答案肯定会超时,所以我们要对答案二分查找。
搞明白二分答案后,我们就来看看这道经典题目。
一眼看到题目中的这一句话:使得rv在比赛过程中的最短跳跃距离尽可能长,当出现最小值最大或最大值最小或求最大值、最小值时,就可以考虑一下二分了。
很显然,这道题我们求的是最短距离,所以我们二分的就是最短距离。
首先验证答案具有单调性:piero偷走的老婆越多,最短跳跃距离越大,这就叫答案的单调性。
然后进行实现。我们假设最短跳跃距离为mid,那么显然0<mid<L,所以我们就先让左端点l=0,右端点r=L,每次mid取中间值mid=(l+r+1)>>1,这里采用的是第二种形式。接着我们写一个check函数,判断一下这个mid是否合法,如果合法,就尝试找一找有没有一个值比mid更大(l=mid)的距离,如果不合法,就把mid减小(r=mid-1)。
那check函数怎么写呢?我们遍历一遍每一块石头,累计出有多少块石头之间的间隔<=mid,如果超过m个,就不合法,如果小于等于m,就合法。
- 1
信息
- ID
- 855
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 39
- 已通过
- 7
- 上传者