[板子]二分查找模板
查找数据左端点:
l=0, r=n-1;
// left
while (l<r)
{
int mid = (l+r)>>1;
if (a[mid]>=k) r=mid;
else l=mid+1;
}
查找数据右端点:
l = 0, r=n-1;
// right
while (l<r)
{
int mid = (l+r+1)>>1;
if (a[mid]<=k) l = mid;
else r = mid-1;
}
查找浮点数:
double l=-10e6, r=10e6;
while (r-l>eps)
{
double mid = (l+r)/2;
if (mid*mid*mid > n) r=mid;
else l=mid;
}

浙公网安备 33010602011771号