首页 > 其他 > 详细

nyoj586||poj2456 二分+贪心

时间:2015-04-21 22:45:18      阅读:320      评论:0      收藏:0      [点我收藏+]

完全看不懂题意。。。。百度搜搜才看懂题意  然后就参考代码了技术分享 和yougth的最大化()nyoj914差不多的方法 二分+贪心

#include <stdio.h>
#include <algorithm>
using namespace std;
int c,a[100005],n;
bool judge(int k)
{
	int p=a[0],cnt=1;//也就这里注意点 从1开始 自己想想为啥
	for(int i=1;i<n;i++)
	{
		if(a[i]-p>=k)
		cnt++,p=a[i];
		if(cnt>=c)
		return true;
	}
	return false;
}
int bin_search(int right)//步步逼近最小值。
{
	int left=0,mid;
	while(left<=right)
	{
		mid=(left+right)/2;
		if(judge(mid))
		left=mid+1;
		else
		right=mid-1;
	}
	return left-1;
}
int main()
{
	while(scanf("%d %d",&n,&c)!=EOF)
	{
		for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
		sort(a,a+n);//从小到大排序
		printf("%d\n",bin_search(a[n-1]-a[0]));//a[n-1]-a[0]最大差值
	}
	return 0;
}


nyoj586||poj2456 二分+贪心

原文:http://blog.csdn.net/su20145104009/article/details/45175349

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!