假如我们遇到了这样的问题,问题要求我们在 y=f(x),(a≤x≤b) 中寻找符合条件的 y ,其中
f
可以为显式函数或隐式关系。一种朴素的思路是在取值范围内枚举所有的 x ,然后判断
y
是否满足条件。这样的时间复杂度是 O(b−a) 。但是当 b−a 的值很大时(例如 107 )就太耗时了。此时若 y 能满足“二分性”(例如升序,降序),则每次在怀疑区间
[l,r]
内取中点 xmid (初始时 l=a,r=b ),再通过判断 f(xmid) 是否满足条件来修正(缩小)怀疑区间(更新 l 或
r
)。这样就可以将时间复杂度优化到 O(log(b−a)) 。
POJ 2456
大意
一维坐标轴上有 n 个位置,我们要把