我的第一个二分采用了这样的写法, Ton#3#4 80pts:
ll l = -3e8, r = 3e8, mid;
while (l < r) {
mid = (l + r) / 2;
if (check(mid)) {
l = mid + 1;
} else {
r = mid;
}
}
cout << r - 1;
第二个AC了,仅仅是换了这种写法:
ll l = -3e8, r = 3e8, mid;
while (l <= r) {
mid = (l + r) / 2;
if (check(mid)) {
l = mid + 1;
} else {
r = mid - 1;
}
}
cout << r;
更玄学的是,我看了一份题解采用了这种写法可以AC,而我换上之后竟然Ton#7#9 80pts
ll l = -3e8, r = 3e8, mid;
while (l < r) {
mid = (l + r) / 2;
if (check(mid)) {
l = mid;
} else {
r = mid - 1;
}
}
cout << r;
为啥这么玄学啊?蒟蒻求解答