例都过不去,输出是1,感觉很奇怪,求调,帮忙看一下
查看原帖
例都过不去,输出是1,感觉很奇怪,求调,帮忙看一下
776337
sugawara楼主2023/8/3 21:24
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6;
int ans,L,n,k,q,road[N];
bool chk(int x){
	int s=0,y=1;
	if(k<=0) return 0;
	for(int i=2;i<=n;i++){
		if(road[i]-road[y]>x){
			y=i;
		}
		else{
			y+=x;
			i--;
			s++;
		}
	}
	return s<=k;
}
int main(){
	scanf("%d%d%d",&L,&n,&k);
	for(int i=1;i<=n;i++) scanf("%d",&road[i]);
	int l=1,r=L;
	while(l<=r){
		int mid=(l+r)/2;
		printf("mid= %d\n",mid);
		if(chk(mid)) ans=mid,r=mid-1;
		else l=mid+1;
	}
	printf("%d",ans);
	return 0;
}

2023/8/3 21:24
加载中...