突然發現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)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
