码迷,mamicode.com
首页 > 其他好文 > 详细

poj 3273 Monthly Expense (二分)

时间:2014-07-31 13:33:26      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:poj 3273 二分

//最大值最小
//天数的a[i]值是固定的 不能改变顺序
# include <algorithm>
# include <string.h>
# include <stdio.h>
using namespace std;
int n,m;
int a[100010];
int judge(int x)
{
	int ans=1;//分成了几组
	int tmp=0;
	for(int i=0;i<n;i++)
	{
		tmp+=a[i];
		if(tmp>x)
		{
			tmp=a[i]; //前i-1天小于等于m,把前i-1天作为一组,第i天作为下一组的第一天  
			ans++;
		}
	}	
	if(ans>m)//大于m组,mid太小
		return false;
	return true;
}
int main()
{

	int i,sum,low;
	while(~scanf("%d%d",&n,&m))
	{
		sum=0;
		low=0;
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			sum+=a[i];
			if(low<a[i])
				low=a[i];
		}
		int l=low;//最小边界为单个里最大的
		int r=sum;
		int mid;
		while(l<=r)
		{
			 mid=(l+r)/2;
			if(judge(mid))
				r=mid-1;			
			else
				l=mid+1;
		}
		printf("%d\n",l);
	}
	return 0;
}

poj 3273 Monthly Expense (二分),布布扣,bubuko.com

poj 3273 Monthly Expense (二分)

标签:poj 3273 二分

原文地址:http://blog.csdn.net/lp_opai/article/details/38312565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!