题解
2026-02-01 12:07:03
发布于:四川
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int c=10e5+5;
int n,m,a[c];
int main(){
cin>>n>>m;
int l=0,r=0;
for(int i=1;i<=n;i++){
cin>>a[i];
l=max(a[i],l);
r+=a[i];
}
int mid,ans;
while(l<=r){
mid=(l+r)/2;
int t=0,cnt=1;
for(int i=1;i<=n;i++){
if(t+a[i]<=mid){
t+=a[i];
}else{
t=a[i];
cnt++;
}
}
if(cnt>m){
l=mid+1;
}else{
r=mid-1;
ans=mid;
}
}
cout<<ans;
return 0;
}
这里空空如也


有帮助,赞一个