あああああ

オタク & 競プロ

整数三分探索の罠

TLで見たから書いておく

C++の除算の話です

 

[l,r) のときに x = (l + l + r) / 3, y = (l + r + r) / 3 として f(x) と f(y) を比較して幅を 2/3 にする、ってのがよく使われている実装だと思います。

 

(例)

[1,5)のときに x = (1 + 1 + 5) / 3 = 2 , y = (1 + 5 + 5) / 3 = 3

 

(本題)

[-2,2)のときに同じことをやると...?

x = (-2 + -2 + 2) / 3 = 0 , y = (-2 + 2 + 2) / 3 = 0

 

 

二分探索だとこれでは死なないので気づきにくいですね