zoukankan      html  css  js  c++  java
  • 关于lower_bound的使用

    突然发现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)

  • 相关阅读:
    c/c++指针
    C++小思
    gvim-ide plugins
    Windows下文件的所有和权限
    C++枚举类型
    linux的cgroup控制
    linux的free命令
    linux下可以禁用的一些服务
    bat programming is easy and powerful
    c++类定义代码的分离
  • 原文地址:https://www.cnblogs.com/polebug/p/4050835.html
Copyright © 2011-2022 走看看