1 条题解
-
0
思路
连续非空分段的最小最大和,单调容量与线性分组计数。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int n,m;cin>>n>>m;vector<int>a(n);long long l=0,r=0;for(int &x:a){cin>>x;l=max(l,(long long)x);r+=x;}while(l<r){long long mid=(l+r)/2,s=0;int groups=1;for(int x:a){if(s+x>mid){groups++;s=0;}s+=x;}if(groups<=m)r=mid;else l=mid+1;}cout<<l<<'\n';}
- 1