信息学奥赛一本通-编程启蒙3465:练83.5 二分查找2

2024-01-04 04:52

本文主要是介绍信息学奥赛一本通-编程启蒙3465:练83.5 二分查找2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3465:练83.5 二分查找2


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 377     通过数: 177

【题目描述】

对有序数组进行二分查找,是一种性能卓越的算法:目标是在有序数组a[]中查找是否有a[k]=key,若有返回kk,否则返回−1−1。

* 若有多个a[k]=key,请输出最大的kk。

* 下标kk从11开始计数。

【输入】

第一行包含11个整数NN,代表数组长度。

第二行包含NN个(N≤30000N≤30000)int范围内的整数,保证升序,空格隔开。

第三行包含11个整数TT,代表有TT组询问。

第四行包含TT个(T≤30000T≤30000)int范围内的整数,表示每组询问需要查找的keykey值,空格隔开。

【输出】

一行,对于每组询问输出结果(kk 或 −1−1),空格隔开。

【输入样例】

4
-2 -2 -2 1
3
-2 -2 -1

【输出样例】

3 3 -1

思路:

正常写就好了

【c++】二分查找教程-CSDN博客


代码: 

#include<bits/stdc++.h>
using namespace std;long long n,key,mi=0,f=0;long long a[30010];
void cha(long long l,long long r,long long mid){while(l<=r){mid=(l+r)/2;if(a[mid]==key){if(mid>mi){mi=mid;f=1;}l=mid+1;}else if(a[mid]>key){r=mid-1;}else if(a[mid]<key){l=mid+1;}}	
}
int main(){ios:: sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;long long l=1,r=n,mid;for(int i=1;i<=n;i++){cin>>a[i];}long long t;cin>>t;for(int i=1;i<=t;i++){cin>>key;l=1;r=n;mi=0;f=0;cha(l,r,mid);if(f==1){cout<<mi<<" ";continue;}cout<<"-1 ";}return 0;
}

这篇关于信息学奥赛一本通-编程启蒙3465:练83.5 二分查找2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/568216

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四: