poj 3273 二分

来源:互联网 发布:php用echo输出表格 编辑:程序博客网 时间:2024/05/29 16:12
#include<iostream>using namespace std;__int64 n,k;int a[100010];bool f(__int64 mid)                            //怎么判断我没有想出来,是百度的{__int64 temp=0,max=0,sum,j;while(temp<n){sum=0;for(j=temp;j<n;j++){sum+=a[j];if(sum>mid){temp=j;max++;break;}}if(j==n){max++;break;}}if(max<=k)return true;elsereturn false;}int main(){__int64 i,left,right,sum=0,max=0,result,mid;scanf("%I64d %I64d",&n,&k);for(i=0;i<n;i++)cin>>a[i];for(i=0;i<n;i++)sum+=a[i];for(i=0;i<n;i++){if(a[i]>max)max=a[i];}left=max;right=sum;while(left<=right){mid=(left+right)/2;if(f(mid)){result=mid;right=mid-1;}elseleft=mid+1;}printf("%I64d\n",result);}

0 0
原创粉丝点击