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