当前位置: 首页 > news >正文

P2249 【深基13.例1】查找

题目描述

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

输入格式

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

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

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

输出格式

输出一行,m 个整数,以空格隔开,表示答案。

输入输出样例

输入 #1

 
11 3
1 3 3 5 7 9 11 13 15 15
1 2 -1

输出 #1

 
1 2 -1

说明/提示

数据保证,1≤n≤106,0≤ai​,q≤109,1≤m≤105。

本题输入输出量较大,请使用较快的 IO 方式。

思路如下:

1.题目要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 −1 。假设这个数为     5,那么我们的分界线应该在5的左边,也就是 <5,另一半则是>=5.套木板的题目就不多说了

2.最后加一个简化输入输出流。

代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e6+10;
int arr[N];
int n,m;
bool isBlue(int num,int k)
{if(num < k)return true;elsereturn false;
}
int find(int arr[],int len,int k)
{int l = 0,r = n + 1;//放在数组两边while(l + 1 < r){int mid = (l + r) / 2;if(isBlue(arr[mid],k))l = mid;	elser = mid;	} if(arr[r] == k)return r;elsereturn -1;
}
int main(void)
{ios :: sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m;for(int i = 1 ; i <= n ; i++)cin >> arr[i];for(int i = 1 ; i <= m ; i++){int number;cin >> number;cout << find(arr,n,number) << " ";//三个分别为数组,单调序列长度,要查找的数number }return 0;
}

6c218d10566b48c0b9898946f423f053.png

 


http://www.mrgr.cn/news/83322.html

相关文章:

  • Docker 拉取镜像速度慢,容易失败?
  • 【笔记】算法记录
  • 使用 Docker 安装 Maven 私服 Nexus3
  • 低空经济——飞行汽车运营建模求解问题思路
  • Git最便捷的迁移方式
  • Windows11环境下设置MySQL8字符集utf8mb4_unicode_ci
  • kubernetes第七天
  • notebook主目录及pip镜像源修改
  • 代码随想录 哈希 test 8
  • 【神经网络中的激活函数如何选择?】
  • 使用 Maxwell 计算母线的电动势
  • 赛车微型配件订销管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Formality:工具生成的文件
  • 初学stm32 --- DAC输出
  • 51c~Pytorch~合集4
  • Ansys Fluent Aeroacoustics 应用
  • Java Web开发进阶——Spring Security基础与应用
  • 操作系统之文件系统
  • 2025年XR行业展望:超越虚拟,融合现实
  • 词作词汇积累:错付、大而无当、语焉不详、愈演愈烈
  • 内核模块里访问struct rq及获取rq_clock_task时间的方法
  • 计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • pytorch模型的保存失敗しましたが、
  • [大模型]本地离线运行openwebui+ollama容器化部署
  • 全解:Redis RDB持久化和AOF持久化
  • C#里使用libxl里演示输出日期和读取日期数据的例子