备战蓝桥杯第一天【二分查找无bug版】

news2024/11/17 3:08:42

🌹作者:云小逸
📝个人主页:云小逸的主页
📝Github:云小逸的Github
🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟
👏专栏:C++👏 👏专栏:Java语言👏
👏专栏:C语言初阶👏👏专栏:数据结构👏

文章目录

  • 前言
  • 二分查找【无bug版本】
  • 代码:
  • 例题:
    • 题目:
    • 输入格式
    • 输出格式
    • 数据范围
    • 输入样例:
    • 代码:
    • 在这里插入图片描述 ​
  • 最后


前言

今天这一篇文章写的是二分法的bug版适用于任何情况,如有错误,请私信告知我,十分感谢ε≡٩(๑>₃<)۶ 一心向学在这里插入图片描述

——————————————————————————————

首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你
1.你过得快不快乐,只有你自己知道。其实谁都有一段不为人知的故事,其实谁都会脆弱的想要- -个停靠,其实谁都想和某个人完成曾经诺言,其实谁都能微笑然后转身流泪,其实谁都的生活都多少有那点苦涩,经历风雨。我只想要少一点悲伤悲伤,多一点快乐。我只想要少- -点孤独,多一点幸福。

2.不是所有的是非都能理清,不是所有的付出都有收获。有些选择是无可奈何,有些失去是注定的。与其无法言说,不如一-笑而过;与其无法释怀,不如安然自若。

3.所谓开心,就是眼睛向.上把快乐放大;所谓烦恼,就是眼睛向下把烦恼放大。

4.你若自信,就有微笑,你若看开,就有快乐,用纯净的眼光看世界,世界就是精彩的,用淡然的方式去生活,生活就是美好的,用平常的心态看得失,人生就是轻松的。

5.心存梦想,机遇就会笼罩着你;心存希望,幸福就会降临于你;心存坚持,快乐就会常伴你;心存真诚,平安就会跟随你;心存感恩,贵人就会青睐你;心存善念,阳光就会照耀你;心存美丽,温暖就会围绕你;心存大爱,崇高就会追随你;心存他人,真情就会回报你;美丽由心而定,心简单就会幸福!

二分查找【无bug版本】

二分查找法的思想在1946年提出的,第一个没有bug的二分查找法在1962年才出现。说明一个道理:真正的实现一个完全正确的算法是复杂的,只是思考算法的思想却是简单的。
在这里插入图片描述
借用acwing中y总的上课时的笔记:
在这里插入图片描述
注:
1.mid=l+r>>1;其是否加上1与后面check的内容以及true时是l=mid还是r=mid;
2.check(mid)是指q[mid]大于或者小于x,x是要查找的数。
3.这里有一个便于记忆的口诀:“有减必有加,有加不用减”如:
如果r=mid-1;则mid=(l+r+1)>>1;
如果l=mid+1;则mid=(l+r)>>1;
这里的口诀便于理解与记忆。

代码:

bool check(int x) {/* ... */} // 检查x是否满足某种性质

// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid)) r = mid;    // check()判断mid是否满足性质
        else l = mid + 1;
    }
    return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{
    while (l < r)
    {
        int mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    return l;
}

例题:

题目:

给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。

对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。

如果数组中不存在该元素,则返回 -1 -1。

输入格式

第一行包含整数 n 和 q,表示数组长度和询问个数。

第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。

接下来 q 行,每行包含一个整数 k,表示一个询问元素。

输出格式

共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。

如果数组中不存在该元素,则返回 -1 -1。

数据范围

1≤n≤100000

1≤q≤10000

1≤k≤10000

输入样例:

6 3
1 2 2 3 3 4
3
4
5

输出样例:

3 4
5 5
-1 -1

代码:

#include<iostream>
using namespace std;

const int N=1e6+10;
int q[N];

int main()
{
    int n=0,m=0;
    scanf("%d%d",&n,&m);
    
    for(int i=0;i<n;i++) scanf("%d",&q[i]);
    
    while(m--)
    {
        int x=0;
        scanf("%d",&x);
        
        int l=0,r=n-1;
        while(l<r)
        {
            int mid=l+r>>1;
            if(q[mid]>=x) r=mid;
            else l=mid+1;
        }
        if(q[l]!=x) cout<<"-1 -1"<<endl;
        else
        {
            cout<<l<<" ";
            
            int l=0,r=n-1;
            while(l<r)
            {
                int mid=l+r+1>>1;
                if(q[mid]<=x) l=mid;
                else r=mid-1;
            }
         
            cout<<l<<endl;
        }
        
    }
    
    return 0;
}

在这里插入图片描述

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.太多的事,慢慢地就不能做了;太多的人,渐渐地就不见了。成长似乎是一个丢失的过程。青春,就是注定了要颠簸,要有眼泪和汗水,有委屈、不甘和失败。后来,慢慢知道一切该发生的就是会发生,一切会错过的就是会错过。

2.趁自己还不老,走自己想走的路。没有理由,不去闯!时间,抓起了就是黄金,虚度了就是流水;理想,努力了才叫理想,放弃了那只是妄想!努力,虽然不一定会获得,但不努力,就一定一无所获。

3.趁自己还不老,走自己想走的路。没有理由,不去闯!时间,抓起了就是黄金,虚度了就是流水;理想,努力了才叫理想,放弃了那只是妄想!努力,虽然不一定会获得,但不努力,就一定一无所获。

4.我一直以为人是慢慢变老的,其实不是,人是一瞬间变老的。

5.随着年龄的增长,我们愈加发现,或许我们并不是失去了一些人,而是更加懂得到底谁才是最重要的人。

最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!

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

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

相关文章

基于 python获取教育领域新闻进行分词关键词词共现分析 Gephi 软件绘制主题知识图谱

本文着眼于对疫情期间教育领域新闻的分析&#xff0c;基于 python 语言&#xff0c;利用爬虫获取教育领域的最新新闻&#xff0c;并将其内容进行分词&#xff0c;抓取关键词。在此基础上&#xff0c;根据关键词进行共现分析&#xff0c;并利用 Gephi 软件绘制主题知识图谱&…

超详细讲解长度受限制的字符串函数(保姆级教程!!!)

超详细讲解长度受限制的字符串函数&#xff08;保姆级教程&#xff01;&#xff01;&#xff01;&#xff09;长度受限制的字符串函数strncpy函数strncpy函数的使用strncpy函数的模拟实现strncat函数strncat函数的使用strncat函数的模拟实现strncmp函数strncmp函数的使用strncm…

【golang分布式Job调度服务】

需求背景 目前各服务里经常会有定时任务相关需求&#xff0c;而定时任务通常要求同时只有一个任务执行&#xff0c;为了保证定时任务高可以通常也需要主备部署&#xff0c;导致开发定义任务时需要考虑锁竞争关系&#xff0c;以及考虑任务执行状态&#xff08;成功、失败、重试…

Lambda表达式了解到使用(清晰明朗)

这里写目录标题lambda简述以前的实现初次使用lambda表达式Lambda表达式的语法测试方法lambda表达式简写示范测试方法运行结果方法引用测试方法运行结果构造方法引用定义一个Boy类编写测试方法运行结果实际应用测试代码运行结果内置函数式接口FunctionalInterface注解Functional…

自从学会了Python,我实现了壁纸自由(6)

小朋友们好&#xff0c;大朋友们好&#xff01;我是猫妹&#xff01;哈哈哈&#xff0c;又到周末啦&#xff01;这周过得怎么样&#xff1f;马上就要开学了&#xff0c;寒假作业早已写好了吧&#xff1f;开学让人兴奋&#xff0c;上了很久网课都要吐啦&#xff01;开学也让人有…

HTTPS为什么就安全了?或者说要安全我们要做到什么?

目录 一 安全概念 二 HTTPS的安全措施 三 总结 一 安全概念 网络安全是一个比较笼统的概念。我们说网络安全的时候&#xff0c;往往会包含很多安全问题&#xff0c;包括网络设备层面、通信过程、数据本身等多方面引入的安全问题。比如设备被有意无意的破坏&#xff0c;链路…

【C/C++基础练习题】简单函数练习题

&#x1f349;内容专栏&#xff1a;【C/C要打好基础啊】 &#x1f349;本文内容&#xff1a;简单函数使用练习题&#xff08;复习之前写过的实验报告&#xff09; &#x1f349;本文作者&#xff1a;Melon西西 &#x1f349;发布时间 &#xff1a;2023.2.11 目录 1.给定某个年…

右键菜单管理 - Win系统

右键菜单管理 - Win系统前言软件工具管理右键菜单360右键管理右键管家前言 Windows系统可以借助软件工具对右键菜单进行管理&#xff0c;可对指定的右键菜单进行删除和恢复。下面以Win10系统为例介绍管理方法。 注意&#xff1a;使用本文提及的工具将某软件的右键菜单删除后&…

电子货架标签多种固定方式

2.1寸和2.9寸电子价格标签多种固定方式&#xff1a; 1、桌面支架&#xff0c;放置在桌面或是货架上&#xff0c;用于桌面产品的价格或是信息显示 2、粘贴架&#xff0c;方便用于墙面桌面等应用 3、半透明支架&#xff0c;用于货架上的商品吊挂显示价格信息 4、轨道架&#xff…

1489车厢调度(train)(栈)

目录 题目描述 解题思路&#xff1a; 代码部分&#xff1a; 题目描述 有一个火车站&#xff0c;铁路如图所示&#xff0c;每辆火车从A驶入&#xff0c;再从B方向驶出&#xff0c;同时它的车厢可以重新组合。假设从A方向驶来的火车有n节&#xff08;n≤1000&#xff09;&…

使用动态参数构建CUDA图

文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来&#xff0c;CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起&#xff0c;并使用指…

shell编程之sed

文章目录八、shell编程之sed8.1 工作原理8.2 sed基本语法8.3 模式空间中的编辑操作8.3.1 地址定界8.3.2 常用编辑命令8.4 sed扩展八、shell编程之sed 8.1 工作原理 sed是一种流编辑器&#xff0c;它是文本处理中非常有用的工具&#xff0c;能够完美的配合正则表达式使用&…

图----无向图

1.定义 图的定义&#xff1a;图是由一组顶点和一组能够将两个顶点相连的边组成 边&#xff1a;edge 顶点&#xff1a;vertex 连通图&#xff1a;如果从任意一个顶点都存在一条路径到达另外一个任意顶点&#xff0c;我们称这幅图是连通图。 非连通图&#xff1a;由若干连通的…

【Python】tkinter messagebox练习笔记

我一好友在朋友圈看到人家用代码花式秀恩爱&#xff0c;让我也做一个&#xff0c;我就用我学习半年python的功力&#xff0c;做了这一个东西。&#x1f64f;窗口主页面&#xff08;图一&#xff09;为了让我这个盆友有颜面&#xff0c;特意做了一个问答问他帅不帅&#xff0c;以…

Active Directory 02 - Windows Kerberos Authentication(Kerberos 协议鉴权)

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助&#xff0c;并分享学习和实践过程…

从0到1一步一步玩转openEuler--11 openEuler基础配置-设置磁盘调度算法

11 openEuler基础配置-设置磁盘调度算法 文章目录11 openEuler基础配置-设置磁盘调度算法11.1 设置磁盘调度算法11.1.1 临时修改调度策略11.1.2 永久设置调度策略11.1 设置磁盘调度算法 本节介绍如何设置磁盘调度算法。 11.1.1 临时修改调度策略 例如将所有IO调度算法修改为…

js逆向-某头条_signature参数

前言 头条的加密参数_signature其实可以通过搜索来直接定位到关键位置&#xff0c;我们换种定位的方法 定位 先查看下堆栈&#xff0c;直接在第一个XMLHttpRequest.send的位置下上断点&#xff0c;然后下拉触发断点 这个位置还有其他请求&#xff0c;这里只看/api/pc/list…

2023 AIME 答案与解析 - 第二期(完结)

原题目 Find the number of cubic polynomials where and are integers in such that there is a unique integer with 绿树教育中心独家解析 是一个有两个整数根的三次方程&#xff0c;因此它有三个整数根。所以&#xff0c; 或 &#xff0c;其中 。 「Case 1」 &#xff0c;则…

关于spring bean的生命周期的个人理解(根据官方文档学习)

首先说一下Servlet的生命周期&#xff1a;实例化&#xff0c;初始init&#xff0c;接受service&#xff0c;销毁destroy&#xff1b; spring上下文中的Bean 生命周期也是类似&#xff0c;如下&#xff1a; &#xff08;1&#xff09;实例化Bean 对于Bean Factory容器&#xf…