AC了,但是疑惑&&警钟长鸣
查看原帖
AC了,但是疑惑&&警钟长鸣
822439
lhz2022楼主2024/10/1 11:38

我的二分是这么写的:

int l=1,r=1e18,ans1=-1;
while(l<=r){
	int mid=(l+r)>>1;
	int chk=check1(mid);
	if(chk<=m){
		if(chk==m) ans1=mid;
		r=mid-1;
	}
	else{
		l=mid+1;
	}
}
if(ans1==-1){
	cout<<-1;
	return 0;
}
l=1,r=1e18;
int ans2=-1;
while(l<=r){
	int mid=(l+r)>>1;
	int chk=check1(mid);
	if(chk>=m){
		if(chk==m) ans2=mid;
		l=mid+1;
	}
	else{
		r=mid-1;
	}
}

然后这里为什么要这样特判?

if(chk==m) ans1=mid;
if(chk==m) ans2=mid;

此外,r要开到1e14

2024/10/1 11:38
加载中...