蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

目录

🌈前言:

📁 二分的概念

📁 整数二分

📁 二分的模板

📁 习题

📁 总结


🌈前言:

        这篇文章主要是准备蓝桥杯竞赛同学所写,为你更好准备蓝桥杯比赛涉及的算法知识点。不知道你是否苦恼于不知算法从何学起,苦恼于网上资料稀少,或者复杂难懂,这篇文章就是帮助这部分同学的。

        下面整理了蓝桥杯考点大纲:

               蓝桥杯考点大纲

  

        通过上图,我们知道二分在蓝桥杯比赛中也是比较重要的,所以我们这里就单独写了一篇文章介绍,不仅是因为比较重要,而且二分算法对于刚接触算法的人来说比较复杂,易错点较多,需要不断调试。

📁 二分的概念

        二分,字面意思就是通过判断是否满足条件将区间分成两份。通常的比如大于等于 或者  小于等于.......

📁 整数二分

        对于整数二分,我们可以分成两中类型 :

        1. [L ,Mid - 1] 和 [Mid , R] :所求答案在Mid 右边

        2. [L , Mid ] 和 [Mid + 1 , R] :所求答案在Midz左边

        这两种不同类型的区间,是由于判断条件不同形成的。

📁 二分的模板

        为了大家更好的做题,已经比赛中更好的利用时间,这里提供了整数二分的模板,以及浮点数二分的模板。

1) 区间[L , R] 划分成[L,Mid] 和 [Mid+1 , R]
bool check(int x)
{
    ...    //检查x是否满足某种条件
}
int bearch_1(int l,int r)
{
    while(l < r)
    {
        int mid = (l + r ) / 2;
        if(check(mid))
            r = mid;
        else
            l = mid + 1;
    }
    return 1;
}

2) 区间[L , R] 划分成[L,Mid-1] 和 [Mid , R]
bool check(int x)
{
    ...    //检查x是否满足某种条件
}
int bearch_2(int l,int r)
{
    while(l < r)
    {
        int mid = (l + r + 1 ) / 2;
        if(check(mid))
            l = mid;
        else
            r = mid - 1;
    }
    return 1;
}

        对于浮点数二分,并不需要关注+-1的问题,所以相对于整数二分来说,简单一些。当然一般来说,对于浮点数二分,我们需要保证精确度在1e-6(1的-6次方)。

bool check((int x)
{
    ...    //检查x是否满足条件
}

int bearch_1(int l,int r)
{
    while(r - l > 1e-6 )
    {
        int mid = (l + r ) / 2;
        if(check(mid))
            r = mid;
        else
            l = mid ;
    }
    return 1;
}

📁 习题

1. 数的范围 789. 数的范围 - AcWing题库

        这道题其实就是一道非常经典的二分题目,首先我们找出左边第一次出现的x,再找出右边第一次出现的x,如果没有找到,则输出-1 -1。

#include <iostream>
#include <cstdio>

using namespace std;

const int N = 100010;

int q[N];
int n,m;


int main()
{
    
    cin >> n>>m;
    for(int i=0;i<n;i++)
        cin>>q[i];
    
    while(m--)
    {
        int x;
        cin>>x;
        int l = 0;
        int 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)
            printf("-1 -1\n");
        else
        {
            printf("%d ",l);
            r = n-1;
            while(l < r)
            {
                int mid = (l + r + 1) >> 1;
                if(q[mid] <= x)
                    l = mid;
                else
                    r = mid -1;
            }
            printf("%d\n",l);
        }
    }
    return 0;
}

2.数的三次方根 790. 数的三次方根 - AcWing题库

        我们从数据范围当做区间,通过二分找出浮点数n的三次方根。

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    double x ;
    cin >> x;
    double l = -10000,r =10000;
    while(r -l > 1e-8)
    {
        double m = (r + l) /2;
        if(m * m * m >= x)
            r = m;
        else
            l = m;
    }
    printf("%lf",l);
    return 0;
}

📁 总结

    以上,我们就对二分在蓝桥杯中的知识点进行了讲解,并针对性的讲解了例题,当然这也只是帮你更好的理解这些算法知识,想要学好算法,还需要不断地刷题练习,这里推荐到洛谷,acwing等网站进行练习,比如你看完了这篇文章,做回了例题习题,就可以上这些网站进行想应的练习。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)

万事开头难。难在迈出第一步。心无旁骛&#xff0c;万事可破。没有人一开始就能想清楚&#xff0c;只有做起来&#xff0c;目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日&#xff0c;华为目前开启已HarmonyOS NEXT开发者预览版Beta招募&#xff0c;报名周期为1月15…

MS2358——96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适…

高密数据中心卓越运维,更灵活助力企业 AI 就绪

AIGC的高速发展将企业对基础架构的需求推上了新的层次&#xff0c;根据中国通服数字基建产业研究院发布的《中国数据中心产业发展白皮书&#xff08;2023&#xff09;》报告&#xff0c;互联网行业客户对单机柜功率密度的要求较高&#xff0c;一般在6-8kW&#xff0c;金融行业处…

使用vscode编写golang代码并交叉编译生成

文章目录 一、修改Go相关环境变量二、为vscode安装插件及依赖1、安装插件2、安装相关依赖 三、新建项目并编写代码1、打开文件夹后&#xff0c;初始化mod&#xff0c;在终端执行&#xff1a;2、新建main.go编写代码 四、运行、调试、build代码1、运行2、调试3、生成可执行文件4…

从js闭包谈到作用域、作用域链、执行上下文、内存管理

文章目录 作用域函数作用域和全局作用域块级作用域和暂时性死区执行上下文和调用栈代码执行的两个阶段调用栈闭包内存管理内存泄漏场景举例浏览器垃圾回收如何避免内存泄漏如何利用闭包实现单例模式 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄…

Spring Boot 单体应用升级 Spring Cloud 微服务

作者&#xff1a;刘军 Spring Cloud 是在 Spring Boot 之上构建的一套微服务生态体系&#xff0c;包括服务发现、配置中心、限流降级、分布式事务、异步消息等&#xff0c;因此通过增加依赖、注解等简单的四步即可完成 Spring Boot 应用到 Spring Cloud 升级。 *Spring Cloud …

喜报!博睿数据荣获数据猿“年度创新服务企业奖、年度创新服务产品奖”!

1月17日&#xff0c;由数据猿与上海大数据联盟联合主办的“大数据产业发展论坛”活动在上海隆重举办。其中&#xff0c;备受关注的《2023中国大数据产业年度榜单》正式揭晓。在众多优秀的企业中&#xff0c;博睿数据凭借其前瞻性的产品技术布局、强大的市场影响力以及卓越的智能…

将vue项目打包成桌面客户端实现点击桌面图标直接进入项目

1.下载NW.js 下载地址&#xff1a;NW.js官网 下载完后zip解压 2.文件夹下新建index.html index内容如下&#xff1a; <!DOCTYPE html> <html> <head> </head> <body> <script language"javascript" type"text/javascript&q…

在分类任务中准确率(accuracy)、精确率(precision)、召回率(recall)和 F1 分数是常用的性能指标,如何在python中使用呢?

在机器学习和数据科学中&#xff0c;准确率&#xff08;accuracy&#xff09;、精确率&#xff08;precision&#xff09;、召回率&#xff08;recall&#xff09;和 F1 分数是常用的性能指标&#xff0c;用于评估分类模型的性能。 1. 准确率&#xff08;Accuracy&#xff09;…

【软件测试常见Bug清单】

软件测试中&#xff0c;bug的类型有很多种&#xff0c;比如&#xff1a;代码错误、界面优化、设计缺陷、需求补充和用户体验等&#xff1b; 一般情况下&#xff0c;需求补充和设计缺陷比较好区分&#xff0c;但是代码错误、界面优化和用户体验区分不是很明显&#xff1b; 下面…

C语言经典练习3——[NOIP2008]ISBN号码与圣诞树

前言 在学习C语言的过程中刷题是很重要的&#xff0c;俗话说眼看千遍不如手动一遍因为在真正动手去刷题的时候会暴露出更多你没有意识到的问题接下来我就为各位奉上两道我认为比较有代表性的题 1. [NOIP2008]ISBN号码 1.1 题目描述 每一本正式出版的图书都有一个ISBN号码与之对…

MySQL运维篇(四)读写分离

一、介绍 读写分离&#xff0c;简单地说是把对数据库的读和写操作分开&#xff0c;以对应不同的数据库服务器。主数据库提供写操作&#xff0c;从数据库提供读操作&#xff0c;这样能有效地减轻单台数据库的压力。 通过 MyCat 即可轻易实现上述功能&#xff0c;不仅可以支持 My…

搜索与图论第三期 树与图的深度优先遍历

前言 该部分内容实际上是DFS的一个扩展&#xff0c;只要是会了DFS之后&#xff0c;这部分其实也差不多&#xff0c;直接上例题啦就。 1…

STM32F103标准外设库——SysTick系统定时器(八)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

架构10- 理解架构的模式4-数据管理模式

一、分片模式&#xff1a;将数据存储区分为多个水平分区或分片&#xff0c;以便更好地管理和处理大量数据。 当业务量达到单个业务表通过缓存和队列削峰等措施后的平均TPS超过1万时&#xff0c;我们不得不考虑数据库分片。 在进行分片之前&#xff0c;我们需要根据数据分布、压…

Qt编程之仿gnome-terminal终端样式 +颜色文字显示

Qt仿linux 终端样式 颜色文字 1.说再多废话不如直接show code2.实现效果 本文采用QTextBrowser作为文本显示窗口&#xff0c;进行文本的显示。本文实例实现的效果并没有终端的输入效果&#xff0c;这里只是提供一些仿终端样式思路。 1.说再多废话不如直接show code 1.ui文件…

SpringMVC入门案例

引言 Spring MVC是一个基于MVC架构的Web框架&#xff0c;它的主要作用是帮助开发者构建Web应用程序。它提供了一个强大的模型驱动的开发方式&#xff0c;可以帮助开发者实现Web应用程序的各种功能&#xff0c;如请求处理、数据绑定、视图渲染、异常处理等。 开发步骤 1.创建we…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章&#xff1a; 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞&#xff1a;xss-labs靶场通关-CSDN博客 XSS漏洞&#xff1a;prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

JS取余运算符 %,ES2023 新增数组方法Array.at

取余运算符&#xff08;%&#xff09;的作用就是用来两个操作数进行相除运算之后的余数。 注意&#xff0c;两个操作数取余是有循环范围的&#xff0c;这个范围为 0 - 第二个参数 - 1。 如下图&#xff1a; 对于6取余的话&#xff0c;得到的取余数据就会一直在0-5之间进行循环…

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能&#xff0c;包括数据包的捕获和分析&#xff0c;以及抓包过滤器的使用方…