二分求助 只过了一个点
查看原帖
二分求助 只过了一个点
320697
AMIRIOX無暝楼主2020/10/11 21:01

record: https://www.luogu.com.cn/record/39675636

第二个数据点太毒瘤...不好查错/kk

#include <cstdio>
#include <iostream>
#define int long long
#define INF 9000000000000000000

using namespace std;
const int maxn = 1e6 + 1;
int n, m;
int a[maxn];
bool check(int x) {
    // 每段最大值
    int cur = 0, c = 0;
    for(int i=1;i<=n;i++) {
        cur+=a[i];
        if(cur>=x) {
            c++;
            cur=a[i];
        }
    }
    if(c<=m) return true;
    return false; 
}
signed main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    int L = 1, R = 1e9 + 1, ans = INF;
    while (L < R) {
        int mid = L + (R - L) / 2;
        if (check(mid)) {
            ans = min(ans, mid);
            R = mid;
        } else {
            L = mid + 1;
        }
    }
    cout << ans << endl;
    return 0;
}
2020/10/11 21:01
加载中...