警示后人
查看原帖
警示后人
552454
洛苡hh楼主2025/1/13 08:45

请注意重复数字对排名带来的影响 以下两种二分结果是不一样的:

int get_val(int L,int R,int v){
	int l=0,r=1e8,mid,res=0;
	while(l<=r){
		mid=(l+r)>>1;
		int num=get_rank(1,L,R,mid)+1;
		if(num<=v){
			l=mid+1;
			res=mid;
		}else{
			r=mid-1;
		}
	}
	return res;
}
int get_val(int L,int R,int v){
	int l=0,r=1e8,mid,res=0;
	while(l<=r){
		mid=(l+r)>>1;
		int num=get_rank(1,L,R,mid)+1;
		if(num>=v){
			r=mid-1;
			res=mid;
		}else{
			l=mid+1;
		}
	}
	return res;
}

后者会因为重复元素在边界处出锅,WA10pts

2025/1/13 08:45
加载中...