二分查找的细节

void fun(int i,int &j,int &tmp){
	int l =i,r=n;
	
	while(l<r){
		int mid = (l+r)/2;
		if(f[mid] - f[i-1]>=m) r =mid;
		else l = mid +1;
	}
	j = r;
	tmp  =f[j] - f[i-1];
}

 二分查找中有几个细节:

   1.首先二分查找的条件是序列满足单调性,在这前提下求最有解是往往尽可能的下标向下移动,这里等于m也是包含在最优解的范围内,所以应该属于r的更新条件

     2.

 

猜你喜欢

转载自www.cnblogs.com/zxzmnh/p/11985557.html