前置知识:
二分,函数(数学领域)。
二分
首先二分的能解决的,仅仅是 单调函数 求极值。什么叫做单调函数?即 y y y 随 x x x 单调不减 或 单调不增 均可用二分解决。如图:
上图是函数 y = 2 3 x y=\frac{2}{3} x y=32x,显然可以用二分在函数上进行解决问题。
实际上二分的解决领域仅仅是 y = k x y=kx y=kx 类型的函数,二次及以上都不行了,反比例函数也不行了。
三分
辟谣
请不要以为我在开玩笑!确实有这样一个算法。
很多初学者会这样认为:
二分就是在 [ l , r ] [l,r] [l,r] 找到中点 mid = ⌊ l + r 2 ⌋ \text{mid} = \lfloor \frac{l+r}{2} \rfloor mid=⌊2l+r⌋,把搜索范围每次减小一半。
三分就是在 [ l , r ] [l,r] [l,r] 找到三等分点 m1 = ⌊ l + r 3 ⌋ , m2 = ⌊ 2 ( l + r ) 3 ⌋ \text{m1} = \lfloor \frac{l+r}{3} \rfloor , \text{m2} = \lfloor \frac{2(l+r)}{3} \rfloor m1=⌊3l+r⌋,m2=⌊32(l+r)⌋,把搜索范围每次变为 1 3 \frac{1}{3} 31。
时间复杂度都是 log \log log 级别的(只不过 log 2 \log_2