同样是二分搜索,思想同上题 #include<iostream> using namespace std; #define N 100005 #define inf 10005 int d[N]; int bin_search(int l,int r,int m,int n) { int left=l,right=r,mid,mon,sum,i; while(left<=right) { mon=1; sum=0; mid=(left+right)/2; for(i=1;i<=n;i++) { if(sum+d[i]<=mid) sum+=d[i]; else { mon++; sum=d[i]; } } if(mon<=m) right=mid-1; else left=mid+1; } return mid; } int main() { int n,m,i,l,r; scanf("%d%d",&n,&m); l=0,r=0; for(i=1;i<=n;i++) { scanf("%d",d+i); r+=d[i]; if(l<d[i]) l=d[i]; } printf("%d/n",bin_search(l,r,m,n)); return 0; }