poj 3273

参数搜索。

代码:

#include<iostream>
#include<fstream>

using namespace std;

long long n,m,mid;
long long a[100001];

long long solve(){
	long long i,j=1,k=0;
	for(i=1;i<=n;i++)
	{
		if(a[i]-a[k]>mid)
		{
			j++;
			k=i-1;
		}
	}
	return j;
}

void read(){
//	ifstream cin("in.txt");
	long long i,j,k=0,s;
	while(cin>>n>>m){
		k++;s=0;
	for(i=1;i<=n;i++)
	{
		cin>>j;
		s=max(s,j);
		a[i]=a[i-1]+j;
	}
	i=s;j=a[n];
	while(i<=j)
	{
		mid=(i+j)>>1;
		if(solve()<=m) j=mid-1;
		else i=mid+1;
	}

	cout<<i<<endl;
	}
}

int main(){
	read();
	return 0;
}

posted on 2011-04-06 16:37  宇宙吾心  阅读(225)  评论(0)    收藏  举报

导航