现在的位置: 首页 > 综合 > 正文

hdu4190

2014年01月30日 ⁄ 综合 ⁄ 共 529字 ⁄ 字号 评论关闭

/*
分析:
    实在想不出来啥好方法,上网一查,二分?!
    好吧,暴力二分吧。
    312MS。

                                    2012-07-31 20:56
*/

#include"stdio.h"
int MAX(int a,int b)
{
	return a>b?a:b;
}
int city[500011];
int main()
{
	int n,m;
	int i;
	int t_num;
	int low,up,mid;
	int temp;


	while(scanf("%d%d",&n,&m)!=-1)
	{
		if(n==-1 && m==-1)	break;


		up=0;
		for(i=0;i<n;i++)	{scanf("%d",&city[i]);up=MAX(up,city[i]);}


		low=0;
		temp=-1;
		while(low<up)
		{
			mid=(low+up)>>1;
			if(temp==mid)	break;
			temp=mid;
			if(!mid)	mid=1;
			t_num=0;
			for(i=0;i<n;i++)
			{
				t_num+=city[i]/mid;
				if(city[i]%mid)	t_num++;
			}
			if(t_num>m)	low=mid;
			else		up=mid;
		}
		printf("%d\n",up);
	}
	return 0;
}

抱歉!评论已关闭.