二分模板
来源:互联网 发布:康生书法 知乎 编辑:程序博客网 时间:2024/06/05 02:39
void solve()
{
int lb=0;
int ub=len;
while(lb<=ub)
{
int mid=(lb+ub)/2;
if(check(mid))lb=mid+1;
else ub=mid-1;
}
cout<<lb-1;
{
int lb=0;
int ub=len;
while(lb<=ub)
{
int mid=(lb+ub)/2;
if(check(mid))lb=mid+1;
else ub=mid-1;
}
cout<<lb-1;
}
这里要注意几点
1. lb<=ub
2.最终答案是mid,也就是lb-1;
3.更换边界的时候要记得加减1
还有一种方法是
while(ub-lb>1)
{
int mid=(lb+ub)/2;
if(check(mid))lb=mid;
else ub=mid;
}
cout<<lb;
但是这种方法不能用来判断端点处的答案
准确的来说是右端点,上面那个方法判断的区间是[l,r);
因为考虑check恒为true,则mid会无限接近ub,当他们的值小于1时,由于计算机的去零取整性,会使得答案为lb
所以上面的上界可以改为 lb=len+1;则区间为[l,r]
阅读全文
0 0
- 【模板】二分
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 二分模板
- 【模板整合】整体二分模板
- 二分图模板
- 二分多重匹配模板
- 二分查找模板 nyoj626
- 二分答案 模板
- Top 10 questions of Java Strings
- Ip转换为数字,正则匹配ip
- HotSpot JVM收集器
- 微信jssdk 签名错误排查方法
- casServerMd5加密(前台/后台)
- 二分模板
- Java StringBuffer & StringBuilder 源码分析
- 商品购买
- 有道云笔记中用图框和线条表达逻辑
- 大数据分析JavaOne2017
- 【JVM】8_对象优先在Eden分配
- 封装 shared::mutex
- Linux 关于安装rabbitmq以及开启远程访问权限步骤
- Django 框架之 HelloWord