跳石头(NOIP2015)
解题思路
这题看到最短跳跃距离尽可能长就会想到二分
但是我们二分的
可以看到限制条件移走的石头最多只能是
我们二分这个最短距离
容易想到一个贪心策略:扫描一遍
模板选用
oooooooooooooov..............
选用二分模板如下
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 r;
}
代码
#include <iostream>
using namespace std;
const int N = 5e5 + 10;
int a[N], n, m, L;
bool check(int x)
{
int cnt = 0, now = 0;
for (int i = 1; i <= n; i ++ )
if (a[i] - a[now] < x) cnt ++ ;
else now = i;
return cnt <= m;
}
int main()
{
scanf("%d%d%d", &L, &n, &m);
for (int i = 1; i <= n; i ++ )
scanf("%d", &a[i]);
a[ ++ n] = L;
int l = 0, r = L;
while (l < r)
{
int mid = l + r + 1 >> 1;
if (check(mid)) l = mid;
else r = mid - 1;
}
printf("%d\n", r);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)