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.
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.