POJ3258 River Hopscotch

  地址

  别人的代码,自己边界总是控制不好,还不知道哪里错了!思维!这种问题代码越简洁反而越不容易错吧。。

 1     #include<stdio.h>  
 2     #include<algorithm>  
 3     typedef long long ll;  
 4     using namespace std;  
 5     ll n,m,L,a[100010];  
 6     bool bi(ll x){  
 7         ll i,cnt=0,now=0;  
 8         for(i=1;i<=n;i++){  
 9             if(a[i]-a[now]<=x)cnt++;  
10             else    now=i;  
11         }  
12         if(L-a[now]<x)return 0;  
13         return cnt<=m;  
14     }  
15     int main(){  
16         ll i,l,r,mi;  
17         while(~scanf("%lld%lld%lld",&L,&n,&m)){  
18             l=0;r=L;  
19             for(i=1;i<=n;i++)  
20                 scanf("%lld",&a[i]),  
21                 r+=a[i];  
22             sort(a,a+n+1);  
23             while(l<r){  
24                 mi=l+r>>1;  
25                 if(bi(mi))l=mi+1;  
26                 else      r=mi;  
27             }  
28             printf("%lld
",r);  
29         }  
30         return 0;  
31     }  
View Code
原文地址:https://www.cnblogs.com/zhaoyu1995/p/5768323.html