二分板子

求最小值
求最小值
int binary()
{
int l = 0, r = ll, mid;
while(l < r)
{
mid = (l + r) >> 1;
if(check(mid)) r = mid; //大多数题只要改改check()即可
else l = mid + 1;
}
return l;
}
求最大值
求最大值
int binary()
{
int l = 0, r = ll, mid;
while(l < r)
{
mid = (l + r + 1) >> 1;
if(check(mid)) r = mid - 1;
else l = mid;
}
return l;
}
面对整数时近似万能的二分
万能二分
int binary(int n)
{
int l = 1, r = maxn, ans = 0;
while(l <= r)
{
int mid = (l + r) >> 1;
if(c[mid] > a[n]) ans = mid, l = mid + 1; //判断条件与ans记录位置因题而异
else r = mid - 1;
}
return ans;
}
转自:https://blog.csdn.net/Mashiro_ylb/article/details/78469151
--END--

浙公网安备 33010602011771号
我的博客: 𝟷𝙻𝚒𝚞
本文链接: https://www.cnblogs.com/1Liu/p/15889457.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!