首页 > 代码库 > POJ2456 Aggressive cows (二分)
POJ2456 Aggressive cows (二分)
题目链接:
http://poj.org/problem?id=2456
题意:
有n个牛舍,位置为xi,c头牛,把每头牛放在与其相邻牛的距离尽量远的牛舍,即最大化相邻两头牛之间的距离,求这个最大距离。
分析:
二分答案,然后O(N)的复杂度判断符不符合。
代码如下:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int maxn = 100010; int n,c; int x[maxn]; bool check(int dis) { int pos=x[0],cnt=1; for(int i=1;i<n;i++){ if(x[i]-pos>=dis){ cnt++; pos=x[i]; } if(cnt==c) return true; } return false; } int main() { while(~scanf("%d%d",&n,&c)){ for(int i=0;i<n;i++) scanf("%d",&x[i]); sort(x,x+n); int l=0,r=1000000000,mid; while(r-l>1){ int mid=(l+r)/2; if(check(mid)) l=mid; else r=mid; } printf("%d\n",l); } return 0; }
POJ2456 Aggressive cows (二分)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。