P2678 跳石头 题解

发布时间 2023-11-18 19:15:13作者: merlinkkk

P2678 跳石头

链接

这道题其实很水

我们二分最长距离,最后用 $check$ 函数 判断合不合法

一下是核心代码

$check$ 函数这样写:

bool check(int x){
	int last=0,tot=0;
	for(int i=1;i<=n;i++){
		if(a[i]-last<x) tot++;
		else last=a[i];
	}
	if(len-last<x) tot++;
	return tot<=m;
}

二分这样写:

int l=1,r=len+1;
	while(l+1<r){
		int mid=(l+r)/2;
		if(check(mid)) l=mid;
		else r=mid;
	}
	cout<<l;

AC代码