附加点过不了,100 Unaccepted(悲)
查看原帖
附加点过不了,100 Unaccepted(悲)
558908
Ou_der楼主2023/9/17 08:35

代码:

#include<bits/stdc++.h>
using namespace std;
long long l,r,mid;
long long i,L,n,k,a[100005],ans;
bool check(int diff)
{
	int i,cnt=0;
	
	for(i=1;i<n;i++)
		if(diff!=0)
			if((a[i]-a[i-1])%diff==0)
				cnt+=(a[i]-a[i-1])/diff-1;
			else
				cnt+=(a[i]-a[i-1])/diff;
	
	return cnt<=k;
}
int main(){
	
	scanf("%lld %lld %lld",&L,&n,&k);
	for(i=0;i<n;i++)
		scanf("%lld",&a[i]);
	sort(a,a+n);
	
	l=0;
	r=L;
	ans=L;
	while(l<=r)
	{
		mid=(l+r)>>1;
		
		if(check(mid))
			r=mid-1,ans=mid;
		else
			l=mid+1;
	}
	
	printf("%lld",ans);
	
	return 0;
}

check函数里面的if(diff!=0)加了WA,不加RE。蒟蒻不知如何解决,在此求助DaLao。

加了if(diff!=0)

不加if

2023/9/17 08:35
加载中...