C++, 100pts, 但subtaskWA,求调
查看原帖
C++, 100pts, 但subtaskWA,求调
1368189
znzryb楼主2024/8/11 12:05
#include <iostream>
#include <cmath>
using namespace std;
const long long int MAXN=100010;
long long int n,k,lenn,sign_posn[MAXN],r,l,mid,cnt,ans; 

bool check(long long int max_dist){
	cnt=0;
	for(long long int i=0;i<=n+1;i++){
		if(i!=1){
			if(sign_posn[i]-sign_posn[i-1]>max_dist){
						// 这是为了处理正好边界长度就是max_dis的情况 
				cnt+=ceil((sign_posn[i]-sign_posn[i-1])/1.0/max_dist)-1;	
			}
		}
	}
	if(cnt<=k){
		return true;
	} else{
		return false;
	}
}

int main(){
	cin>>lenn>>n>>k;
	for(long long int i=1;i<=n;i++){
		cin>>sign_posn[i];
	}
	sign_posn[n+1]=lenn;
	l=0;r=lenn+1;
	while(l<=r){
		mid=l+(r-l)/2;
		if(check(mid)){		// 可能最大距离太大,增设太少的路标,故要减少最大距离 
			r=mid-1;
			ans=mid; 
		}else{
			l=mid+1;
		}
	}
	cout<<ans;
}
// 100 https://www.luogu.com.cn/record/171959332 但被hack数据hack了
//
2024/8/11 12:05
加载中...