美文网首页
STL之二分查找

STL之二分查找

作者: Kevin1996cn | 来源:发表于2017-07-20 12:25 被阅读0次

需要包含头文件algorithm

C++ STL实现二分查找的函数有三个:lower_bound、upper_bound 、binary_search.

他们所有的前提是要有序。

ForwardIter  lower_bound(ForwardIter first ,ForwardIter last ,const T& val)

返回[first , last)中第一个>=val的元素;

ForwardIter  upper_bound(ForwardIter first ,ForwardIter last ,const T& val)

返回[first , last)中第一个>val的元素;

例题:T^T OJ PID:2311
题目大意:给出两个数组,累计第二个数组中的第一个数组的值。
分析:由于给的范围太大,普通遍历会超时,所以使用二分法。

附上已AC代码

#include<bits/stdc++.h>
using namespace std;

int a[1000005],b[1000005];

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long int ans=0;
        long long int n,q;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        cin>>n>>q;
        for(long long int i=1;i<=n;i++)
            cin>>a[i];
        for(long long int i=1;i<=q;i++)
        {
            cin>>b[i];
            if(b[i]==a[lower_bound(a+1,a+n+1,b[i])-a])
            ans+=b[i];
        }
        cout<<ans<<endl;
    }

}

相关文章

  • STL之二分查找

    需要包含头文件algorithm C++ STL实现二分查找的函数有三个:lower_bound、upper_bo...

  • 常用的 STL 查找算法

    常用的 STL 查找算法 《effective STL》中有句忠告,尽量用算法替代手写循环;查找少不了循环遍历,在...

  • 查找算法之二分查找

    二分查找也叫折半查找,前提是查找序列是有序的,它是一种效率较高的查找算法,时间复杂度为O(log2n)。常见的电路...

  • STL算法(查找)

    简介 adjacent_findbinary_searchcout/cout_iffind/find_if/equ...

  • [原创]ArrayMap源码解析

    结构图 初始化数组 put部分 关于hashcode禁止覆盖 indexof 二分查找 查找后的处理 put之二 ...

  • 数据查找之二分查找

    今天上午闲来无事,重温了一遍数组,接触到一种从来没有用过的查询方式:二分查找,也称折半查找。 初次看到这个二分查找...

  • 查找算法之二分查找算法

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其是要求待查表为有序表,且插入删除困难。因此,折半...

  • IOS查找算法之二分查找

    二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,很多非计算机专业的同学很容易...

  • PHP视频教程之PHP有序表查找之二分查找(折半查找)算法

    本篇文章扣丁学堂PHP培训小编带读者们来了解一下PHP有序表查找之二分查找(折半查找)的算法,对PHP开发技术感兴...

  • leetcode刷题02--求链表交点--T160

    题目: 思路一:可以使用c++自带的stl库中的set集合来进行查找知识补充:stl中set的使用: 其实set就...

网友评论

      本文标题:STL之二分查找

      本文链接:https://www.haomeiwen.com/subject/exsdkxtx.html