您的位置:首页 > 其它

【POJ】2456 - Aggressive cows 二分->最大化最小值

2017-08-24 22:06 351 查看
http://poj.org/problem?id=2456

X轴上有N个点,选出C个点,使它们之间最近的距离最远

最大化最小值,使用二分法。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm>
using namespace std;

int n,m;
int x[1000005];

bool ok(int d){
int last=0;
for (int i=2;i<=m;i++){
int now=last+1;
while (now<n&&x[now]-x[last]<d){
now++;
}
if (now==n) return false;
last=now;
}
return true;
}

int main(){
cin >> n >> m;
for (int i=0;i<n;i++){
cin >> x[i];
}

sort(x,x+n);

int l=0,r=99999999;

while (r-l>1){
int mid=(l+r)>>1;

if (ok(mid)) l=mid;
else r=mid;
}

cout << l << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: