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

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

【题目来源】

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

【题目描述】

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

【输入】

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

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

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

【输出】

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

【输入样例】

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

【输出样例】

1 2 -1 

【解题思路】

image

【算法标签】

《洛谷 P2249 查找》 #二分#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 全局变量:
// n: 数组长度
// m: 查询次数
// q: 当前查询值
// tmp: 临时变量(未使用)
// a[1000005]: 存储有序数组
int n, m, q, tmp;
int a[1000005];/*** 二分查找函数* @param q 要查找的值* @return 值在数组中的位置(从1开始),未找到返回-1*/
int find(int q)
{int l = 1, r = n;  // 初始化左右边界while (l < r){int mid = l + (r - l) / 2;  // 计算中间位置,防止溢出// 调整搜索范围if (a[mid] >= q){r = mid;  // 搜索左半部分}else{l = mid + 1;  // 搜索右半部分}}// 检查是否找到目标值if (a[l] == q){return l;}else{return -1;}
}int main()
{// 输入数组长度和查询次数cin >> n >> m;// 输入有序数组for (int i = 1; i <= n; i++){cin >> a[i];}// 处理每个查询for (int i = 1; i <= m; i++){cin >> q;  // 输入查询值cout << find(q) << " ";  // 输出查找结果}return 0;
}
// 使用lower_bound再做一遍
#include <bits/stdc++.h>
using namespace std;// 全局变量:
// n: 数组长度
// m: 查询次数
// q: 当前查询值
// mark: 存储查找结果的位置
// a[1000005]: 存储有序数组
int n, m, q, mark;
int a[1000005];int main()
{// 输入数组长度和查询次数cin >> n >> m;// 输入有序数组(从索引1开始存储)for (int i = 1; i <= n; i++){cin >> a[i];}// 处理每个查询for (int i = 1; i <= m; i++){cin >> q;  // 输入查询值// 使用lower_bound查找第一个不小于q的元素位置mark = lower_bound(a + 1, a + n + 1, q) - a;// 检查是否找到确切值if (a[mark] == q){cout << mark << " ";  // 输出找到的位置}else{cout << "-1 ";  // 未找到输出-1}}return 0;
}

【运行结果】

11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6
1 2 -1
http://www.jsqmd.com/news/390077/

相关文章:

  • 信任就是最好的协作:openclaw的系统提示词分析
  • AI大模型高薪方向揭秘:大模型时代,小白也能弯道超车?高薪收藏帖+90天转型路线图免费领!
  • 大模型国家标准落地,大模型应用指南:小白也能掌握的金融科技新趋势,收藏学习必备!
  • 阿里通义千问团队揭秘Gated Attention,让你的大模型学习效率飙升,速收藏!
  • 从DeepSeek到Seedance2.0,大模型集体爆发!国产AI突然跃迁,小白也能轻松上车收藏!
  • 2026大学生转行,推荐一个好就业的方向——人工智能大模型,开启高薪就业新赛道!
  • 【Hot100-Java便捷】:两数之和 (Two Sum) —— 从暴力枚举到哈希表的思维跃迁
  • 键盘与鼠标:人机交互的奥秘深度解析:原理、实战与踩坑记录
  • OpenClaw怎么做到不串台、能并行、还总回对群 amp;#129302;✅(含源码解析)--OpenClaw系列第1期
  • GLM5.0发布:国产算力突破,大模型进化为智能工作系统,速来收藏学习!
  • AI产品经理转行大模型必读,央视都说AI大模型人才缺口大,为什么大家还是找不到工作?
  • Transformer大模型从入门到进阶:25+核心知识点解析(收藏版)
  • 2026主流电商小程序平台深度测评:功能优势与适用场景全解析
  • 论文阅读“EFFICIENT VISION-LANGUAGE-ACTION MODELS FOR EMBODIED MANIPULATION: A SYSTEMATIC SURVEY“
  • 【GitHub项目推荐--pySLAM:开源、模块化、可扩展的视觉SLAM框架】⭐⭐⭐⭐⭐
  • 当一家公司拥有37,000个智能体:科技投资公司企业AI治理实验
  • 在线图片压缩工具怎么选?几款免费好用的网站对比
  • 【GitHub项目推荐--ORB-SLAM2:开源实时视觉SLAM系统】
  • SpringBoot集成SpringAI与Ollama本地大模型
  • 深入解析:【开题答辩全过程】以 基于微信小程序的医疗物资进销存管理为例,包含答辩的问题和答案
  • 【Python】【机器学习】线性回归
  • 【Python】【机器学习】十大算法简介与应用
  • GitHub 热榜项目 - 日榜(2026-02-17)
  • 大模型开发 - 手写Manus之Sandbox执行代码:03 用Docker为AI Agent打造安全沙箱
  • C# 调用 Lua 完整技术文档
  • 叙事响应:《当预言泛起涟漪——碳硅智能时代的叙事开篇》
  • 【分享】《四十岁才是青春》-别人的四十岁创业史
  • 启蒙灯塔起源团预言—碳硅智能时代到来
  • 2026年测量仪口碑推荐:探寻行业佼佼者,扭矩仪/检测仪/试验机/测量仪/热封仪/测厚仪,测量仪供应商推荐排行 - 品牌推荐师
  • AI元人文:空性界面与空洞注册:阿尔茨海默病与重度抑郁症的存在论-意义论分析——跨学科应用研究的拓展与深化