首页 > 代码库 > [POJ2456]Aggressive cows
[POJ2456]Aggressive cows
来源:USACO 2005 February Gold
思路:
二分牛棚相距长度,判断是否合法。
1 #include<cstdio> 2 #include<cctype> 3 #include<algorithm> 4 inline int getint() { 5 char ch; 6 while(!isdigit(ch=getchar())); 7 int x=ch^‘0‘; 8 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^‘0‘); 9 return x;10 }11 const int N=100000;12 int n,c;13 int x[N];14 inline bool check(const int k) {15 int cnt=0,l=0;16 for(int i=1;i<n;i++) {17 if(x[i]-x[l]>=k) {18 cnt++;19 l=i;20 }21 }22 return cnt+1>=c;23 }24 int main() {25 n=getint(),c=getint();26 for(int i=0;i<n;i++) x[i]=getint();27 std::sort(&x[0],&x[n]);28 int l=0,r=x[n-1]-x[0];29 while(l<r) {30 int mid=(l+r)>>1;31 if(check(mid)) {32 l=mid+1;33 }34 else {35 r=mid;36 }37 }38 printf("%d\n",l-1);39 return 0;40 }
[POJ2456]Aggressive cows
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。