您的位置:首页 > 其它

poj 2456 Aggressive cows (二分求最大值)

2017-04-20 12:10 295 查看
题意:有n间牛房,然后有k头牛,问每头牛最大可以间隔多少。

换了种写法~

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;
int n,c;
const int maxn= 100005;
int a[maxn];
int ok(int mid)
{
int num=1,dis=a[0];
for(int i=1;i<n;i++)
{
if(a[i]-dis>=mid) {num++;dis=a[i];}
}
if(num>=c) return 1;
else return 0;
}
int main()
{
scanf("%d %d",&n,&c);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int l=0,r=a[n-1]+1;
int res=0;
while(l<=r)
{
int mid=l+(r-l)/2;
if(ok(mid)) {res=mid;l=mid+1;}
else r=mid-1;
}
printf("%d\n",res);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: