线段树技巧:处理负数端点值
如果线段树端点值可以取负数,那么应该用$ mid = \left[ \frac{l+r-1}{2} \right] $计算中点(除法向0取整,可以直接用c++的整数除法)
也就是,如果 $\frac{l+r}{2} > 0$ 能平分就平分,否则左区间比右区间长度小1
如果 $\frac{l+r}{2} \le 0$ 能平分就平分,否则左区间比右区间长度多1
e.g.
比如 $l=-2$, $r=-1$
- $mid = \left[ \frac{l+r-1}{2} \right] = -2 $ 正常
- $mid = \left[ \frac{l+r}{2} \right] = -1 $ 死循环