LQ0101 扫地机器人二分

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0101 扫地机器人二分相关的知识,希望对你有一定的参考价值。

题目来源:

题目描述

输入格式
第一行包含两个整数N 和K。
接下来K 行,每行一个整数Ai。1<=K<N<=100000,1<=Ai<=N。

输出格式
输出一个整数表示答案。

输入样例
10 3
5
2
10

输出样例
6

问题分析
用二分搜索来实现。

AC的C++语言程序:

/* LQ0101 扫地机器人 */

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 100000;
int n, k, a[N];

bool judge(int p)

    int pos = 0;
    for (int i = 0; i < k; i++) 
        if (a[i] - pos <= p) 
            if (a[i] <= pos)
                pos = a[i] + p - 1;
            else
                pos += p;
         else
            return false;
    
    return pos >= n;


int main()

    cin >> n >> k;
    for (int i = 0; i < k; i++)
        cin >> a[i];

    sort(a, a + k);

    int l = 0, r = n;
    while (l < r) 
        int mid = (l + r) / 2;
        if (judge(mid)) r = mid;
        else l = mid + 1;
    

    cout << (l - 1) * 2 << endl;

    return 0;

以上是关于LQ0101 扫地机器人二分的主要内容,如果未能解决你的问题,请参考以下文章

扫地机器人哪个品牌好?五款口碑最好的扫地机器人

扫地机器人什么牌子好?2021最新扫地机器人排行榜

石头扫地机器人T6地图动态规划体验:扫地,就是让你明明白白

科沃斯扫地机器df45被卡住了

扫地机芯片是多少纳米的

LQ0058 递增三元组二分