【蓝桥杯】二分查找

二分查找

题目描述

输入 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 1n106 0 ≤ a i , q ≤ 1 0 9 0 \leq a_i,q \leq 10^9 0ai,q109 1 ≤ m ≤ 1 0 5 1 \leq m \leq 10^5 1m105

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

#include<iostream>
using namespace std;
#define MAXN 1000010int a[MAXN], m, n, q;int binary(int val)
{int l = 1, r = n;while (l < r){int mid = (l + r) / 2;if (a[mid] >= val) r = mid;else l = mid + 1;}if (a[l] == val) return l;else return -1;
}int main(void)
{cin >> n >> m;for (int i = 1; i <= n; i++)scanf("%d", &a[i]);for (int i = 0; i < m; i++){scanf("%d", &q);printf("%d ", binary(q));}return 0;
}

题目描述

输入 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,要求输出这个数字在序列中最后一次出现的编号,如果没有找到的话输出比它大的数字中最小的一个的数字的编号如果没有比它大的数字,就输出n+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 1n106 0 ≤ a i , q ≤ 1 0 9 0 \leq a_i,q \leq 10^9 0ai,q109 1 ≤ m ≤ 1 0 5 1 \leq m \leq 10^5 1m105

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

#include<iostream>
using namespace std;
#define MAXN 1000010int a[MAXN], m, n, q;int binary(int val)
{int l = 1, r = n;while (l < r){int mid = (l + r+1) / 2;if (a[mid] <= val)l = mid;else r =mid-1;}if (a[l] == val) return l;else if (a[l] != val && l == n) return n + 1;else return l+1;
}int main(void)
{cin >> n >> m;for (int i = 1; i <= n; i++)scanf("%d", &a[i]);for (int i = 0; i < m; i++){scanf("%d", &q);printf("%d ", binary(q));}return 0;
}

#include<iostream>
using namespace std;int q[100010];
int n,m;void Binary(int x)
{int l=0,r=n-1;while(l<r){int mid=(l+r)/2;//先找左区间if(q[mid]>=x) r=mid;else l=mid+1;}if(q[l]==x){printf("%d ",l);int l=0,r=n-1;while(l<r){int mid=(l+r+1)/2;if(q[mid]<=x) l=mid;else r=mid-1;}printf("%d\n",l);}else{printf("-1 -1\n");}
}int main(void)
{cin>>n>>m;for(int i=0;i<n;i++){scanf("%d",&q[i]);}for(int i=0;i<m;i++){int x;scanf("%d",&x);Binary(x);}return 0;
}

二分查找模板

//找左
while(l<r)
{int mid=(l+r)/2;if(q[mid]>=x) r=mid;else l=mid+1;
}
//找右
while(l<r)
{int mid=(l+r+1)/2;if(q[mid]<=x) l=mid;else r=mid-1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ClassNotFoundException: org.apache.hive.spark.client.Job

hive使用的是3.13版本&#xff0c;spark是3.3.3支持hadoop3.x hive将engine从mr改成spark&#xff0c;通过beeline执行insert、delete时一直报错&#xff0c;sparkTask rpc关闭&#xff0c; 查看yarn是出现ClassNotFoundException: org.apache.hive.spark.client.Job。 开始…

iOS17苹果备忘录怎么设置提醒?

在我们快节奏的生活中&#xff0c;苹果备忘录成了记录灵感、任务和重要事项的得力助手&#xff0c;面对着一个让人头疼的问题——备忘录竟然不能设置提醒&#xff01;突然感觉我的备忘录只是个寂寞的清单&#xff0c;没有提醒的陪伴。 于是&#xff0c;我着手寻找解决之道&…

数组逆序重放

数组逆序重放的意思是将数组的元素逆序排列&#xff0c;然后重新放回原数组中。这个操作可以在很多编程语言中实现&#xff0c;例如Python、Java等。 下面是一个Python的示例代码&#xff0c;可以实现这个操作&#xff1a; def reverse_and_rearrange(arr): # 反转数组 …

二维码智慧门牌管理系统升级解决方案:重新制牌审核快速审批

文章目录 前言一、快速审批与重新安装一、其他系统优势 前言 随着城市化进程的加速&#xff0c;门牌号码的管理变得日益重要。然而&#xff0c;传统的门牌管理方式已经无法满足现代社会的需求。在这样的背景下&#xff0c;二维码智慧门牌管理系统应运而生。但随着系统使用&…

LLM之RAG实战(一):使用Mistral-7b, LangChain, ChromaDB搭建自己的WEB聊天界面

一、RAG介绍 如何使用没有被LLM训练过的数据来提高LLM性能&#xff1f;检索增强生成&#xff08;RAG&#xff09;是未来的发展方向&#xff0c;下面将解释一下它的含义和实际工作原理。 ​ 假设您有自己的数据集&#xff0c;例如来自公司的文本文档。如何让ChatGPT和其他…

Golang使用Swagger文档教程

Golang开发效率是杠杠滴&#xff0c;简单几行代码就可完成一个可用的服务&#xff0c;如下代码&#xff1a; 采用Gin作为web framework采用Gorm作为持久化ORM采用Swagger作为OpenAPI文档管理工具 package mainimport ("encoding/csv""fmt""os"…

【Linux | 编程实践】防火墙 (网络无法访问)解决方案 Vim常用快捷键命令

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

LeetCode | 226. 翻转二叉树

LeetCode | 226. 翻转二叉树 OJ链接 不为空就翻转&#xff0c;空空就停止翻转左子树的节点给了右子树右子树的节点给了左就完成了翻转 struct TreeNode* invertTree(struct TreeNode* root) {//不为空就进行翻转if(root){//翻转struct TreeNode* tmp root->left;root->…

计算机网络安全问题分析与防护措施研究

计算机网络安全问题分析与防护措施研究 【摘要】在信息技术快速发展的今天&#xff0c;网络对于人类的生活方式影响显著增强&#xff0c;网络技术快速地在社会各个领域普及&#xff0c;使得计算机网络的安全成为一个亟待解决的问题。如何能够保证网络的快速健康发展己成为研究…

数据库之 redis

前言&#xff1a; 就学习爬虫而言&#xff0c;对于三种常见的数据库做个基本了解足以&#xff0c;所以笔记都是浅尝辄止&#xff0c;不会涉及太深入的东西。 redis简介 Redis&#xff08;Remote Dictionary Server &#xff0c;远程字典服务&#xff09; 是一个使用ANSI C编写…

简单可行的SeruatV4的安装方案

目前Seurat的版本从V4升级到了V5&#xff0c;由于一些变化&#xff0c;导致当年取巧&#xff0c;使用获取数据的方法都无法在V5中使用。 建议在操作前重启下Rstudio&#xff08;或更确切的说是R&#xff09;&#xff01;&#xff01;&#xff01; 那么如何确保自己能够安装V4的…

活动回顾|德州仪器嵌入式技术创新发展研讨会(上海站)成功举办,信驰达科技携手TI推动技术创新

2023年11月28日&#xff0c;德州仪器(TI)嵌入式技术创新发展研讨会在上海顺利举办。作为TI中国第三方IDH&#xff0c;深圳市信驰达科技有限公司受邀参加&#xff0c;并设置展位&#xff0c;展出CC2340系列低功耗蓝牙模块及TPMS、蓝牙数字钥匙解决方案&#xff0c;与众多业内伙伴…

Vue框架学习笔记——列表渲染:v-for

文章目录 前文提要代码正文 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 主要学习链接&#xff1a;尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 代码正文 <body><div id"box"><ul><li v-for"(p,index)…

Synchronized关键字的底层原理

Synchronized实现 Synchronized创建的时候一个互斥的对象锁&#xff0c;每次只有一个线程可以获取该锁。 其底层主要是基于Monitor实现的&#xff0c;在对象的对象头中存储了MarkWord存储的就是Monitor的地址。 对象的内存结构 对象在内存中存储主要分为三个部分&#xff1a…

聊一聊大模型 | 京东云技术团队

事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT&#xff0c;一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界&#xff0c;各大巨头也纷纷跟进发布了自家的大模型&#…

电动车刷卡-CI522方案

Ci522是一颗工作在13.56MHz频率下的非接触式读写芯片&#xff0c;支持读A卡&#xff08;CI523支持读A/B卡&#xff09;&#xff0c;可做智能门锁、电动车NFC一键启动、玩具NFC开锁等应用。为部分要求低成本&#xff0c;PCB小体积的产品提供了可靠的选择。 Ci522与Si522/MFRC52…

IDEA插件MybatisLog Free失效,不打印日志解决

因为此插件是基于mybatis的本地日志打印基础上操作的,所以检查是否配置日志输出版本. 如果使用的是mybatis-plus框架检查是否有下面语句 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 如果使用的是mybatis框架检查是否有下面语…

巧用JAVA自带的API解决日期类问题

文章目录 题目代码优势 题目 特殊日期 代码 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 import java.time.LocalDate; public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代…

Python更改YOLOv5、v7、v8,实现调用val.py或者test.py后生成pr.csv,然后再整合绘制到一张图上(使用matplotlib绘制)

1. 前提 效果图 不错的链接&#xff1a;YOLOV7训练模型分析 关于map的绘图、loss绘图&#xff0c;可参考&#xff1a;根据YOLOv5、v8、v7训练后生成的result文件用matplotlib进行绘图 v5、v8调用val.py&#xff0c;v7调用test.py&#xff08;作用都是一样的&#xff0c;都是…

基于Linux的网络防火墙设计方法

摘要 随着Internet的迅速发展&#xff0c;网络越来越成为了人们日常生活不可或缺的一部分&#xff0c;而随之引出的网络安全问题也越来越突出&#xff0c;成为人们不得不关注的问题。 为了在一个不安全的网际环境中构造出一个相对安全的环境&#xff0c;保证子网环境下的计算机…