关闭

ZCMU-1679-查找2(二分上界)

153人阅读 评论(0) 收藏 举报
分类:

1679: 查找2

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 253  Solved: 89
[Submit][Status][Web Board]

Description

给你一个长度是n的序列A,然后,有m次询问,每次询问是一个数字X,请你告诉我X在序列A中有多少个数是不大于它的

Input

第一行 ,n,m,(n,m<=100000)

第二行n个数(每个数<=1000)

第三行m个数

Output

输出答案

Sample Input

5 4
2 5 4 3 5
2 5 8 9

Sample Output

1
5
5
5

【解析】
数据太大,普通模拟肯定超时...注意它是求不大于它的有几个所以就要用二分找上界了,把时间复杂度缩小。
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
int lower_bound1(int *A, int x, int y, int v)
{
    int m;
    while (x < y)
    {
        m = x + (y - x) / 2;
        if (A[m]<=v)
            x=m+1;
        else
            y=m;
    }
    return x;
}
int main()
{
    int n,m,p,k,i,q;
    while(~scanf("%d%d",&n,&m))
    {
        int a[n];
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        sort(a,a+n);
        for(i=0;i<m;i++)
        {
            scanf("%d",&q);
        p=lower_bound1(a,0,n,q);
        printf("%d\n",p);
        }
    }
    return 0;
}

0
0
查看评论

二分查找求上界和下界

二分查找求上界和下界假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在此插入vv,序列仍然有序,则可以通过以下方式求出: if middle位置的值 = v:至少已经找到一...
  • q547550831
  • q547550831
  • 2016-05-30 12:21
  • 1727

上界,下界,二分查找

直接上代码了 有注释 //Author: laserss //Time : 2012/11/14 //email : dellaser@163.com #include #include #include #include using namespace std; in...
  • dellaserss
  • dellaserss
  • 2012-11-14 20:45
  • 1759

二分查找上界和下界

详细见详细见《算法竞赛入门》P229 这里用的是左闭右开空间[left , right) upper_bound返回的是target应该插入的位置或者最后一次出现位置的下一个位置 这里的实现就跟STL中的这两个函数功能类似 STL源码学习—-lower_bound和upper_bound算法 #in...
  • gao1440156051
  • gao1440156051
  • 2016-01-26 13:49
  • 841

PHP实现二分查找(递归与非递归)

binarySearch 二分查找采用的方法比较容易理解,以数组为例, 先取数组中间的值floor((low+low+top)/2), 然后通过与所需查找的数字进行比较,若比中间值大,则将首值替换为中间位置下一个位置,继续第一步的操作;若比中间值小,则将尾值替换为中间位置上一个位置,继续第一...
  • xuandaijian
  • xuandaijian
  • 2015-10-11 20:06
  • 4761

基于二分查找法的数值区间查找

本文给出基于二分查找法的区间查找的定义,并辅以C++源码,并介绍一下二分查找法的区间查找的应用。
  • zjq2008wd
  • zjq2008wd
  • 2014-08-18 14:54
  • 1818

二分查找,二分上界,二分下界

#include #include #include using namespace std; const int masn=1e6+10; int x[masn],y[masn]; //区间左闭右开,从0或1开始都可以 int binary_sorce(int t,int l,int r) { ...
  • Swordsman___DDZ
  • Swordsman___DDZ
  • 2016-10-16 20:14
  • 139

POJ1003_Hangover(二分求上界)

Hangover Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 99245   Accepted: 48092 ...
  • u013320038
  • u013320038
  • 2014-05-18 18:04
  • 400

二分搜索树(Binary search tree)

二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,任何节点的键值大于等于该节点左子树中的所有键值,小于等于该节点右子树中的所有键值。 未完待续。。;。。
  • caiwei0709
  • caiwei0709
  • 2015-10-15 15:09
  • 453

二分查找、快速排序对比和详解

**二分查找和快速排序(binarySearch)&&(quickSort)** 这两个都是用到分治的思想很容易搞混。而且即使binarySearch是用到分治到不一定意味着递归可以通过循环实现。而且是属于面试笔试的高频问题有必要总结一下。 由于循环相比递归少了很多内存分配和压栈的操...
  • qhrqhrqhr
  • qhrqhrqhr
  • 2016-03-24 22:19
  • 2568

算法基础(一)——冒泡,简单选择排序,二分查找

做为数学专业的我,其实一直特别喜欢数学,只不过大学的数学课程让我有点失望,所以选择了专心学习另一个行业计算机,但是随着学习的不断深入,感觉到了数学魅力,数学可以运用到几乎所有的行业,它无处不在,在计算机中一个看似复杂的问题,其实在数学中也平凡不过。去年参加软考中设计了算法,因为当时时间比较紧,而且为...
  • liujiahan629629
  • liujiahan629629
  • 2014-02-24 21:37
  • 5274
    个人资料
    • 访问:90646次
    • 积分:6503
    • 等级:
    • 排名:第4412名
    • 原创:568篇
    • 转载:38篇
    • 译文:0篇
    • 评论:11条
    最新评论