51nod 1128 正整数分组 V2

来源:互联网 发布:sql delete where 编辑:程序博客网 时间:2024/06/06 03:45

二分下答案就好了。

#include<bits/stdc++.h>using namespace std;const int MAXN=50050;long long n,k;long long a[MAXN];bool judge(long long limit){long long sum=1,now=0,i;for(i=1;i<=n;i++){if(a[i]>limit)return 0;if(now+a[i]>limit){sum++;now=a[i];}elsenow+=a[i];}return sum<=k;}int main(){long long i,lef,rig,mid;while(~scanf("%d%d",&n,&k)){for(i=1;i<=n;i++)scanf("%lld",&a[i]);lef=0;rig=1ll<<50;while(lef<=rig){mid=(lef+rig)>>1;if(judge(mid))rig=mid-1;elselef=mid+1;}printf("%lld\n",lef);}}


0 0