码迷,mamicode.com
首页 > 其他好文 > 详细

[POJ2456]Aggressive cows

时间:2017-08-10 10:25:25      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:int   blog   std   sdi   for   i++   nbsp   class   判断   

来源: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

标签:int   blog   std   sdi   for   i++   nbsp   class   判断   

原文地址:http://www.cnblogs.com/skylee03/p/7337278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!