二分的各种操作
来源:互联网 发布:养匪自重知乎 编辑:程序博客网 时间:2024/05/17 22:20
二分是一种玄学的算法,为了AC你通常得换N多个模板,就像我当年敲三道二分没模板是一样的,但其实你可以用各种玄学操作来固定模板,你可以用以下模板:
int l=1,r=maxn,mid=(l+r)>>1;//x>>1相当于x/2while (l+1<r){ if (check(mid)) l=mid; else r=mid; mid=(l+r)>>1;}但是有人说,还是会WA啊
那可以在加一些判断啊,比如下面的
if (check(l)) printf("%d",l);else printf("%d",r);//这是你要较小值的情况,如果要较大值就反一下变成if (check(r)) printf("%d",r);else printf("%d",l);当然我们用的可是C++啊,如果你懒得打模板,你还可以用C++STL库里自带的二分
C++STL库里有两个二分,lower_bound&&upper_bound
lower_bound是找数组里第一个比元素k大的元素下标
upper_bound是找数组里第一个比元素k小的元素下标
注:数组必须是有序的,不然会出错
例如lower_bound(a+1,a+1+n,k)就是找a数组中第一个比k大的数的下标
upper_bound同理。
还有,能用二分的题基本都是直接或间接的给你透露出有序,最大值最小或最小值最大等信息的。
阅读全文
0 0
- 二分的各种操作
- 二分查找的各种条件
- 二分搜索树的实现以及各种操作(支持重复节点)
- 选择排序,二分查找,Arrays类操作数组的各种方法
- 各种图的各种操作
- 文件的各种操作
- 单链表的各种操作
- 各种操作的计时
- 单链表的各种操作
- 树的各种操作
- 红黑树的各种操作
- 数据表的各种操作
- 各种数据库的操作
- 单链表的各种操作
- FTP的各种操作
- 单链表的各种操作
- 字符串的各种操作
- 单链表的各种操作
- 「Deep Learning」Caffe: convert_imageset.cpp
- 二分总结
- 使用https加密之后的数据问题
- 宏基因组实战5. sourmash基于Kmer比较数据集
- 接续符
- 二分的各种操作
- 转义字符
- 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefor
- 10个完整的Android开源项目,值得大家学习借鉴
- Jzoj5414 幸运值
- Maven之(一)Maven是什么
- 图的dfs、bfs
- POJ 3728 The merchant
- 洛谷 1080 [NOIP2012] 国王游戏 贪心+高精