洛谷题解 - P2249 【深基13.例1】查找

【题解-洛谷】P2249 【深基13.例1】查找 要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出。的单调不减的(就是后面的数字不小于前面的数字)非负整数。本题输入输出量较大,请使用较快的 IO 方式。对于每次询问,给出一个整数。个整数,表示询问这些数字的编号,从。个整数,表示这些待查询的数字。个整数,以空格隔开,表示答案。,表示数字个数和询问次数。 阅读详情

题目描述

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

输入格式

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

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

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

输出格式

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

样例 #1

样例输入 #1

11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6

样例输出 #1

1 2 -1

提示

数据保证, 1 ≤ n ≤ 1 0 6 1 \leq n \leq 10^6 1≤n≤106, 0 ≤ a i , q ≤ 1 0 9 0 \leq a_i,q \leq 10^9 0≤ai​,q≤109, 1 ≤ m ≤ 1 0 5 1 \leq m \leq 10^5 1≤m≤105

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

代码

#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int findx(int x,int left,int right)
{
	if(left>right)
		return -1;
	int mid=left+(right-left)/2;
	if(a[mid]==x)
	{
		if(a[mid-1]==x && mid!=1)
			return findx(x,left,mid-1);
		return mid;
	}
	if(a[mid]>x)
		return findx(x,left,mid-1);
	return findx(x,mid+1,right);
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	int x;
	while(m--)
	{
		cin>>x;
		cout<<findx(x,1,n)<<" ";
	}
	return 0;
}
洛谷 P2249 【深基13.例1】查找 题解 二分查找 二分查找 洛谷题解 C++代码 附详细注释 阅读详情

相关推荐

题解:洛谷 P2249 【深基13.例1】查找

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出。的单调不减的(就是后面的数字不小于前面的数字)非负整数。对于每次询问,给出一个整数。个整数,表示询问这些数字的编号,从。个整数,表示这些待查询的数字。个整数,以空格隔开,表示答案。,表示数字个数和询问次数。#普及-# #整数二分#本文分享的必刷题目是从。

团爸讲算法 730

P2249 【深基13.例1】查找(洛谷,C++,二分法)

二分法的简单应用,注意要调用内层二分法以确保找到最早出现位置

m0_74036684的博客 1470

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

洛谷P2249 【深基13.例1】查找

输入 n 个不超过 10^9 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1​,a2​,…对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 -1。但是要寻找最开始出现的位置,则需要找到目标值后,通过一个变量记录目标值出现的位置,然后继续往左边找,知道循环退出。数据保证,1≤n≤10^6,0≤ai​,q≤10^9,1≤m≤10^5。第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。输出一行,m 个整数,以空格隔开,表示答案。

qq_63514555的博客 2734

深入解析rknn-toolkit2混合量化:如何为RK3588和RK356X选择最佳量化策略

本文深入解析了RKNN-Toolkit2混合量化技术,针对瑞芯微RK3588和RK356X芯片的硬件特性差异,提供了最佳量化策略选择指南。通过混合量化技术,开发者可以在保持较高推理效率的同时显著降低精度损失,特别适用于边缘计算场景。文章详细介绍了混合量化的技术原理、实战流程及芯片专属优化策略,帮助开发者充分利用硬件特性提升模型性能。

dog123的博客 259

SpringAI系列 - MCP篇(二) - MCP Server Boot Starter

此处需注意之前的。

罗小爬的技术宝书 1321

P2249 【深基13.例1】查找

因为序列是有序的,是从小到大的,所以mid右边的数都大于等于它。所以我们把L赋值为mid+1, 这是L的值为6,R的值位N,那说明我们要继续查找L到R之间那个数等于5。我们要判断的这个a[mid]等于5,正好是答案,但是不要急,在二分算法里面一般是不会去专门判断答案的,同学们可以继续看下去,就知道为什么不用判断了。到这个时候,L和R都等于7了,不满足L

2301_81784259的博客 2542

微信公众号 - 最新详细实现H5网页接入微信支付功能,开发移动端、PC端网站集成使用微信支付流程及示例代码,公众号网页利用JS-SDK/JSAPI/H5支付授权唤起微信支付,可脱离微信环境支付或内置浏

微信公众号,微信支付,网页,移动端,h5,扫码支付,二维码付款,手机网页,电脑pc网页生成支付二维码,js-sdk,jsapi,外部浏览器调起微信支付,脱离微信环境,在微信内置浏览器如何进行微信支付,前端H5微信支付,web网站,vue2,vue3,nuxt2,nuxt3,jquery,微信公众号h5支付流程,如何实现,怎么做,回调报错,redirect_uri参数错误,必须部署才能调试吗,怎么不打包发布就能在本机测试,微信H5支付能力,uniapp微信支付,h5页面调起支付,支付没反应,无效,失败,H5页

🏆 前端领域优质创作者 6105

洛谷-P2249 【深基13.例1】查找

输入 $n$ 个不超过 $10^9$ 的单调不减的(就是后面的数字不小于前面的数字)非负整数 $a_1,a_2,\dots,a_{n}$,然后进行 $m$ 次询问。对于每次询问,给出一个整数 $q$,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 $-1$。数据保证,$1 \leq n \leq 10^6$,$0 \leq a_i,q \leq 10^9$,$1 \leq m \leq 10^5$第一行 $2$ 个整数 $n$ 和 $m$,表示数字个数和询问次数。### 样例输出 #1。

2301_78402089的博客 309

【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

baron-周贺贺-代码改变世界ctw 6428

【图论】系列(一)之图论的构成

图论是研究图的数学分支,本章介绍了图论的基本构成和概念

qq_30066733的博客 751

Python P2249 【深基13.例1】查找

输入 n 个不超过 10⁹ 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1​,a2​,…对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 −1。第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。数据保证,1≤n≤106,0≤aᵢ,q≤10⁹,1≤m≤10⁵。第一行 2 个整数 n 和 m,表示数字个数和询问次数。输出一行,m 个整数,以空格隔开,表示答案。方法二: ( 使用 bisect 库 )方法一: ( 二分查找 )

vilililli的博客 438

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5525

题解【洛谷】P2249 深基13.例1查找

题目描述: 链接:https://www.luogu.com.cn/problem/P2249 题意理解: 由于这题数据单调有序,所以可以用二分查找来做,算法复杂度O(nlogn)O(nlogn)O(nlogn),思路就是如果a[mid]这 个数大于等于x,右等于mid,否则左等于mid+1。 那么,常说的,二分查找和二分答案的区别是什么呢: 二分查找通常是n次询问,每次询问的复杂度是O(logn)O(logn)O(logn) 二分答案通常是1次询问,每次询问的复杂度是O(logn)O(logn)O(log

摸摸加油 609

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

洛谷 P2249 【深基13.例1】查找 题解

题目: https://www.luogu.com.cn/problem/P2249 题目大意: 就是查找m个整数的位置 思路: 使用二分查找 坑点: 注意格式!!! 代码: #include<stdio.h> #include<iostream> #include<algorithm> using namespace std; const int n=1e6+10;//定义空的数组常用的,再解释一下1e+10:就是10的六次方加10,一般会开大一点防止报错

Lztandwbr的博客 1018

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

洛谷 P2249 Python解法【深基13.例1】查找 题解 二分查找

备战蓝桥杯python组,学习二分时发现洛谷很多题都没有python题解,于是填补空白。

zhongs_cy的博客 279

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

刷题笔记:洛谷P2249 【深基13.例1】查找 (Java)

输入: 11 3 1 3 3 3 5 7 9 11 13 15 15 1 3 6 输出: 1 2 -1 基础二分查找题,但是也要注意3个点: 1,Java没有算法库,需要手写二分. 2 ,输入输出次数过多,不能用Scanner类来读取,读取的太慢了会导致超时并且内存超限,应该要用快读快输,不过这道题不要快输也行,所以必须记住快读数字,快读字符串,和快输的模板。 3, 看清题目要求,要求找到该数字第一次出现的位置 ,所以不能在找到目标后就往前遍历,这样的话有特殊数据会导致超时..

weixin_52278591的博客 1436

洛谷P2249 【深基13.例1】查找进阶解法

#include<iostream> #include<vector> using namespace std; int n, m; vector<long long>a(1000000, 0); long long q; int binarysearch(int begin, int end) { if (begin > end) return EOF; int mid = (begin + end) / 2; if (q == a[mid] &am

金色传说的特级博客 299

查找(洛谷p2249)

好,然后接着我们来看题,这道题是一个典型的二分查找(就是他给出的数据是一个有序的序列,然后每次可以与他中间元素比,每次都能缩小一半的范围),但是二分查找很容易写错(特别容易写错)因为他会有一个区间的问题,并且他还有一部分的细节要求,他的思路还是二分查找,但是我那个是找到就停了,大佬的这个是找到了都不停,一直在用二分的方式在逼近最左端,最后拿下了,这种方式比我的更快,大家可以观摩一下。因为vs编译器认为scanf这个函数是不稳定的,但是scanf_s并没有scanf好用,所以需要加上这一句话。

spiritualfood的博客 780

【洛谷】二分查找实现首次出现位置(C)

在官方的题解集普遍是直接使用C++的STL诸方法来解决,因个人需要,故而再使用C语言原生实现一波。

AlanKSorata的博客 1234

洛谷P2249 [深基13.例1] 查找

二分查找

2201_75460323的博客 444

洛谷P2249做题笔记 二分模板

洛谷P2249做题笔记 二分模板 这一篇我主要讲讲大佬的二分思想。 代码如下: #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> using namespace std; int n,num[1000006],m,k; int main() { scanf("%d%d",&n,&m); for(in

weixin_50547586的博客 451

【GESP】C++五级练习题 luogu-P2249 【深基13.例1】查找

GESP C++ 五级练习题,二分查找考点应用,重点理解二分查找和STL二分查找库的应用。五级考生可以练习。题目难度⭐⭐☆☆☆,洛谷难度等级普及−。

CoderCoding的博客 158

【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)

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

HEX9CF的技术博客 628

二分模板:P2249 【深基13.例1】查找——洛谷(题解)

输入 �n 个不超过 109109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 �1,�2,…对于每次询问,给出一个整数 �q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 −1−1。数据保证,1≤�≤1061≤n≤106,0≤��,�≤1090≤ai​,q≤109,1≤�≤1051≤m≤105。第三行 �m 个整数,表示询问这些数字的编号,从 11 开始编号。第一行 22 个整数 �n 和 �m,表示数字个数和询问次数。输出一行,�m 个整数,以空格隔开,表示答案。

2301_80718054的博客 839
上一篇: 洛谷题解 - B2119 删除单词后缀
下一篇: 洛谷题解 - B2124 判断字符串是否为回文
Python_enjoy
博客等级 码龄4年 1201粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值