二分主要应用于一段区间求满足题意的单点(或单个状态)问题
区间一般呈现的是线性的关系
因此可以对区间每次分成两个部分,每次分割后进行一次判定,直到找到符合条件的点
思路的大致代码
#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; }