1 条题解

  • 0
    @ 2026-5-4 15:11:42

    将灯笼按非递减顺序排序。然后我们需要找到相邻两个灯笼之间的最大距离,记为 maxdist\text{maxdist}。同时需要考虑街道的边界,计算最外侧灯笼到街道边界的距离,即 (a[0]0)(a[0] - 0)(la[n1])(l - a[n-1])。答案将是:

    $$\max\left(\frac{\text{maxdist}}{2},\ \max(a[0] - 0,\ l - a[n-1])\right) $$

    时间复杂度:O(nlogn)O(n \log n)

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int n,i,a[100500],rez,l;
    int main()
    {
        scanf("%d%d",&n,&l);
        for (i = 0; i < n; i++)
            scanf("%d",&a[i]);
        sort(a,a+n);
        rez = 2*max(a[0],l-a[n-1]);
        for (i = 0; i < n-1; i++)
            rez = max(rez, a[i+1]-a[i]);
        printf("%.10f\n",rez/2.);
        return 0;
    }
    
    • 1

    信息

    ID
    6803
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    1
    已通过
    1
    上传者