自用二分模板,要注意中间的mid值问题,很可能因为不谨慎而造成死循环或是漏过正解
while (left <= right) {
mid = (left + right) >> 1;
//这里代表检查中间的值,具体怎么检查因题而异
if (mid >= m) {
if (m == mid) {//特判mid
ans = mid;
}
right = mid - 1;
}
else
left = mid + 1;
}
cout<<ans<<endl;//可能还要考虑ans不正确的情况...