一、适用场景
①答案具有单调性
②求最值(最小的最大,最大的最小)、最优解
二、步骤
①二分答案的区间 O(logn)
②贪心验证 O(n)
一般可以使用前缀和
三、核心代码
while(l <= r)
{
int mid = (l+r)>>1;
if(check(mid))
{
ans = mid;
l = mid+1;
}
else r = mid-1;
}
①答案具有单调性
②求最值(最小的最大,最大的最小)、最优解
①二分答案的区间 O(logn)
②贪心验证 O(n)
一般可以使用前缀和
while(l <= r)
{
int mid = (l+r)>>1;
if(check(mid))
{
ans = mid;
l = mid+1;
}
else r = mid-1;
}