#include <iostream> #include <cstdio> #include <cmath> using namespace std; int a[100005],m,n; bool flag(int x) { int sum=0,step=1; for(int i=1;i<=n;i++) { if(a[i]>x) return 0; if(sum+a[i]<=x) sum+=a[i]; else { sum=a[i]; step++; if(step>m) return 0; } } return 1; } int main() { int tail=0; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); tail+=a[i]; } int head=0,mid; while(head+1<tail) { mid=(head+tail)/2; if(flag(mid)==1) tail=mid; else head=mid; } printf("%d",tail); //system("pause"); } View Code
转载于:https://www.cnblogs.com/jason2003/p/6572229.html
相关资源:宏达废品回收公司管理系统破解版