不说了还是二分,挑战自己码代码的速度
每次二分最远的距离就可以了
最后不知道怎么要判断下r
1 #include2 #include 3 using namespace std; 4 int a[100005],n,m; 5 int check(int x){ 6 int nowstone=1; 7 int dist=a[1]; 8 int stone=0; 9 while(nowstone<=n){10 while(dist m)return 0;14 dist+=a[nowstone]-a[nowstone-1];15 }16 dist=a[nowstone+1]-a[nowstone];17 nowstone++;18 }19 return 1;20 }21 int main(){22 int leng;23 cin>>leng>>n>>m;24 for(int i=1;i<=n;i++){25 cin>>a[i];26 }27 a[n+1]=leng;28 int l=0,r=leng;29 int ans;30 while(l >1;32 if(check(mid))ans=mid,l=mid+1;33 else r=mid-1;34 }35 if(check(r))ans=r;36 cout<
代码能力勉强还能达到要求了