[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
",l-1);
39     return 0;
40 }
原文地址:https://www.cnblogs.com/skylee03/p/7337278.html