二分主要应用于一段区间求满足题意的单点(或单个状态)问题
区间一般呈现的是线性的关系
因此可以对区间每次分成两个部分,每次分割后进行一次判定,直到找到符合条件的点
思路的大致代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int l = 0 ,r = R ,ans = 0;
while(l <= r)
{
int mid = (l+r)/2;//二分区间
if(check(mid))//每次检查
{
ans = mid;
r = mid-1;
}
else
l = mid+1;
}
cout<<ans<<endl;
}