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.
浙公网安备 33010602011771号