二分算法的思想:
通过不断减小问题规模,从边界条件出发求解问题。(通常是单调性问题,判定形式较为简单)
二分算法的优点:
1.把n的时间复杂度优化到logn
2.将一个问题转化为判定性质问题求解
代码:
while(l<=r)
{
if(check(mid)
{
ans = mid;
r = mid-1;
}
else
ans = mid+1;
}
例题:
block towers
n个人选择n个不同2的倍数的数,m个人选择m个3的倍数的数,选择的最大数字最小!