Dream__Sky @ 2023-07-31 22:39:53
rt 经常搞错 谢谢
by DE_aemmprty @ 2023-07-31 22:42:28
我是比较保守的,如:
int l = 0, r = 1e9, ans = -1;
while (l <= r) {
int mid = l + r >> 1;
if (check(mid)) {
ans = mid;
...
}
else ...
}
一般不会错,用了很久了
by ACRUSHj @ 2023-07-31 22:46:26
@Dream__Sky 我是:
int mid=l+r>>1;
if(check(mid))l=mid+1;
else r=mid;
在左端点右移时选择mid+1不会死循环
by ACRUSHj @ 2023-07-31 22:47:57
@ACRUSHj 当然为了写成这样可能还要把二分对象倒过来,如此
写的时候偶尔会纠结(
by qi__ @ 2023-08-01 07:13:16
楼上正解