首页 > 其他 > 详细

关于lower_bound的使用

时间:2014-10-25 21:16:35      阅读:292      评论:0      收藏:0      [点我收藏+]

突然发现lower_bound是一个挺好用的东西,

在学习最长不下降子序列的nlogn的算法的时候看到的,C++党写起二分来一行- -P党一排233

感觉如果到时候需要用上二分的话,能用lower_bound代替真是省事啊...有时间的话,再好好的研究下

这里先简单的mark一下lower_bound的用法;

 

首先说一下lower_bound是用来求在first和last中的前闭后开区间进行二分查找,返回大于或等于x的第一个元素位置

比如,你现在需要求a[i](i=1,2,3......)的第2个数到第10个数中,大于或等于x的第一个元素的位置;(注意这里是从1开始定义)

因为lower_bound返回的是最小的指针,所以还要-a;

 

pos=lower_bound(a+2+1,a+10+1,x)-a;

具体的运用可以看BZOJ1609;

 

另外提一下,upper_bound的用法和lower_bound类似,返回的是指向满足a[i]>k的最小指针(区别在于,不含等号)

 

我们可以用他们求出有序数组a有多少个相同的k

upper_bound(a,a+n,k)-lower_bound(a,a+n,k)

 

关于lower_bound的使用

原文:http://www.cnblogs.com/polebug/p/4050835.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!