求问
查看原帖
求问
748238
ghx0052楼主2024/7/8 11:36

刚刚提交了几遍同样的代码,次次分数都不一样,然后试了题解之后发现题解能过,我的分数一直蹦迪;

我的代码:

#include <bits/stdc++.h>
using namespace std;
int a[100100];
int n, m, k;
bool check(int x) {
    int m1 = m;
    for (int i = 1; i <= n; i ++) {
        int sum = a[i], cnt = 1;
        while (sum + a[i + 1] <= x && i <= n) i ++, cnt ++, sum += a[i];
        m1 --;
    }
    return m1 >= 0;
}
int main() {
    cin >> n >> m;
    k = (n + m - 1) / m;
    int l, r, sum = 0;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i];
        sum += a[i];
        l = max(l, a[i]);
    }
    r = min(sum, int(1e9));
    while (l <= r) {
        int mid = r + l >> 1;
        if (check(mid)) r = mid - 1;
        else l = mid + 1;
    }
    cout << l;
}

2024/7/8 11:36
加载中...