数列分段 Section II题解
2025-07-25 18:15:37
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,l=0,r=0;
cin>>n>>m;
int a[n+5];
for(int i = 1;i <= n;i++){
cin>>a[i];
l = max(l,a[i]);
r+=a[i];
}
int mid,ans;
while(l<=r){
mid=(l+r)/2;
int sum=0,cnt=1;
for(int i = 1;i <= n;i++){
if(sum+a[i]<=mid){
sum+=a[i];
}else{
sum=a[i];
cnt++;
}
}
if(cnt>m){
l=mid+1;
}else{
r=mid-1;
}
}
cout<<l;
return 0;
}
这里空空如也










有帮助,赞一个