玄学=号
查看原帖
玄学=号
1009027
stils楼主2023/12/15 23:09
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m,ans,num[N],maxn;
bool check(int x){
    int res=0,arr=0;
    for(int i=1;i<=n;i++){
        if(num[i]>x)return false;
        if(arr+num[i]>x){
            arr=num[i];
            res++;
        }
        else arr+=num[i];
    }
    if(res<m)return true;//这里如果是<=的话就全WA,但改成<就AC了,不懂
    else return false;
}
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>num[i];
        maxn+=num[i];
    }
    int l=0,r=maxn;
    while(l<=r){
        int mid=(l+r)>>1;
        if(check(mid)){
            ans=mid;
            r=mid-1;
        }
        else l=mid+1;
    }
    cout<<ans<<endl;
    return 0;
}
2023/12/15 23:09
加载中...