文章

171

粉丝

165

获赞

73

访问

90.9k

头像
Best Cow Fences 题解:二分
P803
发布于2026年2月12日 17:20
阅读数 46

#include <bits/stdc++.h>
using namespace std;

int n, L;
vector<int> A;

// 判断平均值 mid(已 ×1000)是否可行
bool check(int mid) {
    static long long s[100005];
    s[0] = 0;

    for (int i = 1; i <= n; i++) {
        s[i] = s[i - 1] + A[i] * 1000LL - mid;
    }

    long long min_pre = 0;

    for (int i = L; i <= n; i++) {
        min_pre = min(min_pre, s[i - L]);

        if (s[i] - min_pre >= 0)
            return true;
    }

    return false;
}

int main() {
    cin >> n >> L;
    A.resize(n + 1);

    for (int i = 1; i <= n; i++)
        cin >> A[i];

    int l = 0, r = 1000 * 100000; // 最大值范围
    int ans = 0;

    while (l <= r) {
        int mid = (l + r) / 2;

        if (check(mid)) {
            ans = mid;
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }

    cout << ans << endl;
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发