本人使用的二分答案的模板是:
while (l < r) { int mid = l + r >> 1; if (check(mid)) { ... } else { ... } }
但是今天(其实早就知道了,但一直没遇到)交 P4344 的时候发现必须写成 int mid = l + r + 1 >> 1 才行。
P4344
int mid = l + r + 1 >> 1
查了一下资料,普遍称是死循环问题,但没有说清楚什么时候会出现(洛谷日报那篇也看了看),有人能帮帮吗QwQ