P2249 【深基13.例1】查找(二分查找)

简介: P2249 【深基13.例1】查找(二分查找)

题目描述



输入  n(n≤106) 个不超过 10^9  的单调不减的(就是后面的数字不小于前面的数字)非负整数  a1,a2,…,an,然后进行  m(m≤105) 次询问。对于每次询问,给出一个整数  q(q≤109),要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 -1 。


输入格式



第一行 2 个整数 n 和 m,表示数字个数和询问次数。

第二行 n 个整数,表示这些待查询的数字。

第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。


输出格式



m 个整数表示答案。


输入输出样例



输入 #1复制

11 3

1 3 3 3 5 7 9 11 13 15 15

1 3 6


输出 #1复制


1 2 -1

分析这个就是二分查找第一位,我们可以直接用函数也可以用底层代码来做。


1.引用函数

#include<bits/stdc++.h>
using namespace std;
const int maxn =1e6+6;
int n, q;
int a[maxn];
int main() {
    cin >> n >> q;
    a[0]=-1;
    for (int i = 1;i<=n;i++) {
        cin >> a[i];
    }
    while (q--) {
        int x;
        cin >> x;
        int pt = lower_bound(a, a+n,x)-a;//二分查找函数 
        if (a[pt] == x) {
            cout << pt << ' ';
        }
        else {
            cout << -1 << ' ';
        }
    }
    return 0;
}


2,底层代码来做

#include <iostream>
#include <cstdio>
using namespace std;
int a[1000100],k; 
int bsearch(int l,int r){
  while (l < r){
    int mid=l+r >> 1;
    if (a[mid] >= k) r=mid ;
    else l=mid+1;
  }
  return l;
}
int main (){
  int n,m;
  scanf ("%d%d",&n,&m);
  int i,j;
  for (i = 0;i < n;i++) scanf ("%d",&a[i]);
  while (m--){
    scanf ("%d",&k);
    int c=bsearch(0,n-1);
    if (a[c] == k) printf ("%d ",c+1);
    else printf ("-1 ");
  }
}
相关文章
|
算法 安全 搜索推荐
深入浅出:使用Python实现人脸识别系统
在当今数字化时代,人脸识别技术已成为安全验证、个性化服务等领域的关键技术。本文将引导读者从零开始,逐步探索如何利用Python和开源库OpenCV来构建一个基础的人脸识别系统。本文不仅会详细介绍环境搭建、关键算法理解,还会提供完整的代码示例,帮助读者理解人脸识别的工作原理,并在实际项目中快速应用。通过本文,您将能够掌握人脸识别的基本概念、关键技术和实现方法,为进一步深入学习和研究打下坚实的基础。
|
算法 调度
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
7032 0
|
机器学习/深度学习 人工智能 算法
小白教程-阿里云快速搭建Stable-Diffusion WebUI环境+免费试用
Stable-Diffusion 是目前热门的AIGC图像生成方案,通过开源与社区共享模型的方式,成为AI艺术与创意产业的重要工具。本文介绍通过阿里云快速搭建SD WebUI的服务,并有免费试用权益,适合新手入门。通过详细步骤指导,帮助读者轻松上手,享受创作乐趣。
2265 0
|
11月前
|
机器学习/深度学习 人工智能 监控
AI视频监控技术的核心优势与实践
AI视频监控技术结合了计算机视觉、深度学习和大数据分析,能够实时分析监控画面,识别异常行为和场景变化。其核心在于从“被动记录”转型为“主动识别”,提升监控效率并减少安全隐患。主要应用场景包括泳池管理、健身器械区域、人员密度预警和异常事件检测。系统架构支持多种摄像头设备,采用边缘计算和Docker部署,具备实时性、高准确率和扩展性等优势。未来将优化复杂场景适应性和实时计算负载,进一步提高系统性能。
2653 7
|
存储 运维 Kubernetes
Kubernetes学习-集群搭建篇(一) 搭建Master结点
Kubernetes学习-集群搭建篇(一) 搭建Master结点
|
机器学习/深度学习 存储 算法
强化学习实战:基于 PyTorch 的环境搭建与算法实现
【8月更文第29天】强化学习是机器学习的一个重要分支,它让智能体通过与环境交互来学习策略,以最大化长期奖励。本文将介绍如何使用PyTorch实现两种经典的强化学习算法——Deep Q-Network (DQN) 和 Actor-Critic Algorithm with Asynchronous Advantage (A3C)。我们将从环境搭建开始,逐步实现算法的核心部分,并给出完整的代码示例。
1507 1
|
JavaScript 前端开发 Java
html页面导出为pdf(jsPDF、iText、wkhtmltopdf)
html页面导出pdf,本来是一件很简单的事情,在浏览器直接打印(Mac快捷键为⌘+p;Windows快捷键为ctrl+p),就可以把页面另存为pdf文件,但对于要经常把页面导出为pdf的用户来说并不友好,一个合格程序员的标准就是:做出来的软件猪都要会用,否则你就是猪。 调研了几种html导出pdf的实现方式,这里把要点记录下来分享下。
html页面导出为pdf(jsPDF、iText、wkhtmltopdf)
|
机器学习/深度学习 人工智能 自然语言处理
PyTorch搭建图卷积神经网络(GCN)完成对论文分类及预测实战(附源码和数据集)
PyTorch搭建图卷积神经网络(GCN)完成对论文分类及预测实战(附源码和数据集)
656 1
|
Apache 数据安全/隐私保护
|
算法 Java
数据结构-构造哈夫曼树【详解+代码+图示】一文解惑!
数据结构-构造哈夫曼树【详解+代码+图示】一文解惑!
6421 1

热门文章

最新文章