求教。。

P2678 [NOIP2015 提高组] 跳石头

上面打的不清楚 #include<bits/stdc++.h> using namespace std; int main() { int L,m,n,a[50050],i,l,r,mid,num,sum,j; cin>>L>>n>>m; for (i=1;i<=n;i++) scanf("%d",&a[i]); a[0]=0; a[n+1]=L; l=1; r=L; while (l<r) { sum=0; mid=(l+r)/2; num=0; j=0; while (j<=n+1) { while (a[j]-a[num]<=mid&&j<=n+1) j++; if (a[j]-a[num]>mid) sum++; num=j; } if (sum<=n-m) r=mid; else l=mid+1; } cout<<l<<endl; return 0; }
by jackywang @ 2018-06-03 19:06:03


再清楚点 ``` #include<bits/stdc++.h> using namespace std; int main() { int L,m,n,a[50050],i,l,r,mid,num,sum,j; cin>>L>>n>>m; for (i=1;i<=n;i++) scanf("%d",&a[i]); a[0]=0; a[n+1]=L; l=1; r=L; while (l<r) { sum=0; mid=(l+r)/2; num=0; j=0; while (j<=n+1) { while (a[j]-a[num]<=mid&&j<=n+1) j++; if (a[j]-a[num]>mid) sum++; num=j; } if (sum<=n-m) r=mid; else l=mid+1; } cout<<l<<endl; return 0; } ```
by yummy @ 2018-07-12 22:13:07


|