1 条题解

  • 1
    @ 2025-2-28 22:57:36
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    const int N = 100010;
    
    int n, m;
    int cows[N];
    double sum[N];
    
    bool check(double avg)
    {
        for (int i = 1; i <= n; i ++ )
            sum[i] = sum[i - 1] + cows[i] - avg;
    
        double mins = 0;
        for (int i = m, j = 0; i <= n; i ++, j ++ )
        {
            mins = min(mins, sum[j]);
            if (sum[i] - mins >= 0) return true;
        }
    
        return false;
    }
    
    int main()
    {
        cin >> n >> m;
        double l = 0, r = 0;
        for (int i = 1; i <= n; i ++ )
        {
            cin >> cows[i];
            r = max(r, (double)cows[i]);
        }
    
        while (r - l > 1e-12)
        {
            double mid = (l + r) / 2;
            if (check(mid)) l = mid;
            else r = mid;
        }
    
        printf("%d\n", (int)(r * 1000 + 1e-3));
    
        return 0;
    }
    

    信息

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