二分是一个看似很简单的搜索算法,但也是有讲究的,所以在这里,我整理一下模板

这个模板有几个易错点,我们挨个看看:

(1)l = mid +1, r = mid  - 1 习惯性的错过mid

错的原因很简单,就是因为你每(l+r)/2一次,你就少了一个mid,因为你这样写,无论如何取不到mid,所以有些情况你就会错过最优解。

(2)mid = (l + r + 1) / 2 与 mid = (l + r) / 2

这样写是为了避免死循环

我们看模板1, 如果 mid = (l +  r) / 2 的话,当 l = 3,mid = 3, r = 4的时候,触发l = mid这个条件,l 一直等于3,一直出不去循环

反观模板2,如果l = 3, mid = 3, r = 4;  触发 l = mid + 1, l == r 退出循环, 触发 r = mid,l == r退出循环所以模板一需要mid = (l + r) /2;

 while(l < r){mid = (l + r + 1)/2;if(a[mid] <= x) l = mid;else r = mid - 1;}
while(l < r){mid = (l+r)/2;if(a[mid] >= x) r = mid;else l = mid + 1;}

(3)a[mid] < x, a[mid] > x 即带不带等号

这个是需要根据题意来定的,比如PTA advanced Level Practice 10,寻找一个等于n1这个数的进制,所以无论大于n1还是小于n1,等于都在区间之内

二分模板 from y总相关推荐

  1. 归并排序详解(Acwing 归并排序y总模板)

    归并排序详解 文章目录 归并排序过程 demo(完整y总模板) 结束语 每个人心里都有一团火,路过的人却只看见了烟.加油xdm!!! 归并排序过程 基础知识:我们知道归并排序也是一种基于分治法思想的排 ...

  2. 最长上升子序列三种模板(n^2模板,二分模板,树状数组模板)

    最长上升子序列(LIS)是动态规划的入门.总结下来,经常用的模板一共有三种,分别为n^2模板,二分模板,树状数组模板. n^2模板代码如下: //n^2算法,本质就是dp,采用二重循环的方式.对于数据 ...

  3. 度假村房间预订HTML5模板,里面总共有6个子页面,适合度假酒店预订网站模板。

    度假村房间预订HTML5模板,里面总共有6个子页面,适合度假酒店预订网站模板.不仅仅是首页,二级页面,三级页面,登陆,购物车等,页面齐全 功能齐全  js+css+html (img,字体均有),前端 ...

  4. 实数二分(模板及例题)

    模板 while(high-low>eps){//eps为精度mid=(high+low)/2;if(check(mid))low=mid;elsehigh=mid; } ans=low; 例题 ...

  5. 背包问题全解 <y总AcWing>

    文章目录 背包九讲 一.01背包问题 二.完全背包问题 三.多重背包问题 四.混合背包问题 五.二维费用的背包问题 六.分组背包问题 七.背包问题求方案数 八.背包问题求最优的物品方案 九.有依赖的背 ...

  6. 浮点数二分模板---yxc

    #include<bits/stdc++.h>using namespace std;int main() {double n;cin>>n;double l=-1e4,r=1 ...

  7. python【数据结构与算法】二分模板

    import sys import math import cmath import bisect import string import heapq from itertools import c ...

  8. qdu cxsys 讲课二分模板

    //最大值最小 int l,r; while(l<r) { int mid=l+r+1>>1;//(l+r)/2if(check(mid)) l=mid;else r=mid-1; ...

  9. 小鳄鱼剪绳子(二分模板)

    [题目描述] 有 N 根绳子,第 i 根绳子长度为 Li,现在需要 M 根等长的绳子,你可以对 N 根绳子进行任意裁剪(不能拼接),请你帮忙计算出这 M 根绳子最长的长度是多少. [输入格式] 第一行 ...

  10. 石油大 金币 二分答案

    文章目录 题目描述 输入 数据范围 输出 想法 参考 实现 题目描述 乔治在梦中来到了一个神奇部落,这个部落的神树具有奇特的功能:对于每一位新朋友,都会获赠金币,而且金币的数量会随时间的延续而增加: ...

最新文章

  1. 4岁的儿子还不会写红黑树,我该怎么办?
  2. python数据分析-数据准备
  3. 基于 ida 的反汇编转换 Obj 的可行性 笔记(2)
  4. 《心欢喜,灵快乐》出版
  5. 到天宫做客(2017寒假培训测试压轴题)
  6. 隐藏网页文件的后缀(IIS测试通过)!
  7. mac os qt项目编译_【Qt开发】第一个Qt程序Hello World!
  8. 吴恩达机器学习训练1:线性回归(多变量)
  9. linux io ports io memory
  10. 我的本科毕业论文——Messar即时通讯系统
  11. Altium Designer PCB设计常用规则
  12. 神一样的产品经理——基于移动与互联网产品实践
  13. Quantile-Quantile (q-q) Plots
  14. mysql中rtrim的用法,MySQL RTRIM()用法及代码示例
  15. 建博会网红打卡地的幕后推手,竟来自这个团队
  16. 四川企立方:拼多多开店的优点和缺点!
  17. dockerfile-maven-plugin推送镜像到远程harbor仓库出现denied: requested access to the resource is denied
  18. cl.fe3.xyz index.php,2_FE_Diabetes.ipynb
  19. Python中最全的窗口操作,如窗口最大化、最小化、窗口置顶、获取缩放比例等
  20. 禅道/缺陷报告/测试报告/接口测试及用例/Fildder

热门文章

  1. 跟着偶像学大数据——开端篇
  2. 通过os中的os.path.basename获取路径中的文件名
  3. unbtun python tab补全
  4. Container的限制
  5. android圆角柱状图,MPAndroidChart 圆角柱状图-Go语言中文社区
  6. 拓端tecdat:R语言梯度提升机 GBM、支持向量机SVM、正则判别分析RDA模型训练、参数调优化和性能比较可视化分析声纳数据
  7. 拓端tecdat|R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
  8. 拓端tecdat|matlab估计arma garch 条件均值和方差模型
  9. Android tftp服务器,Ubuntu下配置TFTP服务以及 android下使用TFTP
  10. caffe中Makefile.config配置