POJ3258 River Hopscotch

本文约 200 字,阅读需 1 分钟。

地址

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

 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\n",r);
29         }
30         return 0;
31     }

View Code

总阅读量次。