二分回顾
来源:互联网 发布:js点击图片全屏显示 编辑:程序博客网 时间:2024/05/20 02:28
基础的东西很重要OvO
1.STL里面有upper_bound()以及lower_bound()
lower_bound(a,a+n,value);返回值为数组a中≥value的位置。如果都比value小,则指向a+n,注意该位置越界。
upper_bound(a,a+n,value);返回值为数组a中>value的位置。如果都比value小,则指向a+n,注意该位置越界。
区别在于如果数组为
pos: 1 2 3 4 5 6 7 8
val: 1 2 3 3 3 6 7 8 ,lower查找3返回3,upper返回6,[lower,upper)构成value取值的区间
2.手写
经常题目里不会出现一个排序好的数组,而是一个函数,那么需要手写
为了标准化程序应该模拟lower_bound()和upper_bound()
lower_bound():
返回值为数组a中≥value的位置
while(x<y){ mid=x+(y-x)/2; if(Judge(mid)>=value) y=mid; else x=mid+1;}
return x;
upper_bound():
返回值为数组a中>value的位置
while(x<y){ mid=x+(y-x)/2; if(Judge(mid)>value) y=mid; else x=mid+1;}
return x;
二分的区间定为[x,y),即查找的区间。 但是返回值的候选区间是[x,y]。
因为mid取值为(x+y)/2的下界,所以mid不会等于y,[x,mid]不会与原区间[x,y]相同,不会死循环。
而[mid+1,y]与[x,y],mid+1>=x+1同样不会陷入死循环。
0 0
- 二分回顾
- 常用算法回顾——二分查找算法
- 20分钟回顾基础排序与二分查找
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- 回顾
- HDOJ 1281 - 棋盘游戏 快两年没写二分图匹配了~回顾下匈牙利
- 二分
- 二分
- jQuery ajax jsonp实现跨域请求
- 新手的linux之旅 五、安装IE浏览器
- 夏季吃芹菜叶拌花生米补钙 夏日吃芹菜叶更营养
- android之类似卫星菜单,来自定义ViewGroup。。。。。
- hash codeforces567C Geometric Progression
- 二分回顾
- 夏季养生要以“清”为贵
- Linux操作系统-标准IO库(4)
- [数据结构]后缀数组
- UVA - 10765 Doves and bombs(双连通分量)
- 相机拍照与图库
- Qt交叉编译时ICPC命令未找到处理方法
- Schema和dtd的作用
- 模式分类 绪论