为什么只有第一个测试点会 WA
查看原帖
为什么只有第一个测试点会 WA
557823
fox_nice楼主2022/7/29 11:23

RT,代码如下:

#include <bits/stdc++.h>
using namespace std;
int n,k,a[100010];
bool check(int x){
    int now=0,cnt=1;
    for(int i=0;i<n;i++){
        if(now+a[i]>x){
            ++cnt;
            now=a[i];
        }else{
            now+=a[i];
        }
    }
    return cnt<=k;
}
int cal(int l, int r) {
    while(l<r){
        int mid=(l+r)>>1;
        if(check(mid)){
            r=mid;
        }else{
            l=mid+1;
        }
    }
    return l;
}
int main() {
    int mx,sum = 0;
    cin >>n>>k;
    for(int i=0;i<n;i++) {
        cin >>a[i];
        sum+=a[i];
        mx=max(mx,a[i]);
    }
    cout<<cal(mx,sum)<<endl;
    return 0;
}
2022/7/29 11:23
加载中...