二分法-蓝桥杯

news2024/11/24 14:05:05

一、二分法引入-猜数游戏

  • 二分法:折半搜索。

  • 二分的效率:很高,O(logn)

  • 例如猜数游戏,若n=1000万,只需要猜log10 7= 24次

  • 猜数游戏的代码:

  • bin_search------>二分搜索

  • 把一个长度为n的有序序列上O(n)的查找时间,优化到了O(logn)。

二、理论背景-非线性方程的求根问题

  • 满足方程: f(x)=0的数x称为方程的根。

  • 非线性方程:指f(x)中含有三角函数、指数函数或其他超越函数。

  • 非线性方程,很难或者无法求得精确解。

  • 二分法是一种求解的方法。

三、非线性方程的近似解

  • 非线性方程:

在实际应用中,只要得到满足一定精度要求的近似解就可以了。

  • 根的存在性:

判定:设函数在闭区间[a, b]上连续,且f(a)· f(b) < 0,则f(x)=0存在根。

  • 求根:

有两种方法:搜索法、二分法。

  • 搜索法

  • 二分法

四、使用二分法的两个条件

  • 上下界[a, b]确定。

  • 函数在[a,b]内单调。

五、二分法复杂度

六、整数二分

七、例题

1.例一

在单调递增序列中找X或者X的后继。

在单调递增数列a[]中查找某个数x,如果数列中没有x,找比它大的下一个数。

  • a[mid]>=x时:x在mid的左边,新的搜索区间是左半部分,left不变,更新right = mid。

  • a[mid]<x时:x在mid的右边,新的搜索区间是半部分,right不变,更新left = mid +1。

  • 代码执行完毕后,left = right,两者相等,即答案所处的位置。

2.例二

在单调递增序列中查找X或者X的前驱。

在单调递增数列a[]中查找某个数x,如果数列中没有x,找比它小的前一个数。

  • a[mid]<=x时,x在mid的右边,新的搜索区间是右半部分,所以right不变,更新left =mid。

  • a[mid]>x时,x在mid的左边,新的搜索区间是左半部分,所以left不变,更新right = mid -1

3.对比

八、真题实例1

1.真题解析

2.输入部分的代码

3.暴力法解题

把边长从1开始到最大边长d,每个值都试一遍,一直试到刚好够分的最大边长为止。

编码:边长初始值d=1,然后d=2,3,4,...一个个试。

4.暴力法复杂度

复杂度:n个长方形,长方形的最大边长d。

check()计算量是O(n),做d次check(),总复杂度O(nxd),n和d的最大值是10的5次方,超时。


5.二分法解题

一个个试边长d太慢,用二分法,按前面的“猜数游戏”的方法猜d的取值。

暴力法需要做d次check(),用二分法,只需要做O(logd)次check(),总复杂度O(nlogd)。


6.两种方法对比

九、真题实例2

1.二分法套路题:最小值最大化、最大值最小化

在n块岩石中移走m个石头,有很多种移动方法

在第i种移动方法中,剩下的石头之间的距离,有一个最小距离ai。

在所有移动方法的最小距离ai中,问最大的ai是多少。

在所有可能的最小值中,找最大的那个,就是“最小值最大化”。

2.暴力法解题

找所有的组合,在n块岩石中选m个石头的组合。情况太多,超时。

3.二分法解题

不找搬走石头的各种组合,而是给出一个距离d,检查能不能搬走m块石头而得到最短距离d。把所有的d都试一遍,肯定能找到一个最短的d。用二分法找这个d。

4.输入部分的代码

5.检查距离d是否合适:贪心法

6.用二分法找最小距离d

十、实数二分

  • 与整数二分法相比,实数二分容易多了,不用考虑整数的取整问题。

  • 两种写法: while、for。

十一、真实例题3

1.暴力法解题

本题数据范围小,可以用暴力法模拟。

一元三次方程有3个解,用暴力法,在根的范围[-100,100]内一个个试。答案只要求3个精度为2位小数的实数,那么只需要试200*100=20000次就行了。判断一个数是解的方法:如果函数值是连续变化的,且函数值在解的两边分别是大于0和小于0,那么解就在它们中间。例如函数值f(i)和f(j)分别大于、小于0,那么解就在[i,j]内。

2.二分法解题

如果题目要“精确到小数点后6位”,上面的暴力法需要计算200*106次,超时了。

二分法:题目给了一个很好的条件:根与根之差的绝对值大于等于1。在每个[i,i+1]小区间内做二分查找。

十二、二分法练习习题

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

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

相关文章

【java】Spring Boot --Spring Boot 集成 MyBatis

文章目录1. 前言2. 实例场景3. 数据库模块实现4. Spring Boot 后端实现4.1 使用 Spring Initializr 创建项目4.2 引入项目依赖4.3 数据源配置4.4 开发数据对象类4.5 开发数据访问层4.6 添加 MyBatis 映射文件5. 测试6. 小结1. 前言 企业级应用数据持久层框架&#xff0c;最常见…

【项目】Vue3+TS CMS 基本搭建相关配置

&#x1f4ad;&#x1f4ad; ✨&#xff1a;Vue3 TS   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: today beginning&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0c;希望可以指正&#xff0c;非常感谢&#x1f609;   基本…

2023爱分析 · 数据科学与机器学习平台厂商全景报告 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 孟晨静 爱分析分析师 目录 1. 研究范围定义 2. 厂商全景地图 3. 市场分析与厂商评估 4. 入选厂商列表 1. 研究范围定义 研究范围 经济新常态下&#xff0c;如何对海量数据进行分析挖掘以支撑敏捷决策、适应市场的快…

Milvus 新版本来啦!首席工程师带你划重点:安全、稳定、升级友好

Milvus 又又又又出新版本了&#xff01;Milvus 2.2.3 版本是 2.2 系列的小版本升级&#xff0c;尽管是小版本的更新&#xff0c;但是依然干货满满&#xff1a;首先是带来了社区中呼声很高的 coordinator 节点的高可用能力&#xff1b;其次还新增了不停机滚动升级的功能&#xf…

第八章:DNS解析服务器搭建

今天先讲一下DNS的简单配置。 Windows server DNS&#xff1a; 点击工具选择DNS 右击正向查找区域&#xff0c;然后选择新建&#xff0c;如果是根域就可以勾AD储存&#xff0c;不是的话就别勾 名字可以随便 最后点击完成&#xff0c;这是正向解析 右击反向查找区域&#xff0c…

面试浅谈之十大排序算法

面试浅谈之十大排序算法 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是面试浅谈系列&#xff0c;收录在专栏面试中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列将记录一些阿呆个人整理的面试题 &#x1f3c3;&…

【QA】[vue/element-ui] 日期输入框的表单验证问题

引入&#xff1a;element-ui的表单验证是使用rules来定义规则&#xff0c;其中日期类型的表单输入框如图所示&#xff0c;一般会使用 format 来设置自己需要的日期格式&#xff1a; <el-form-item label"生日" prop"birthday"><el-col :span&quo…

Java高手速成 | 图说重定向与转发

我们先回顾一下Servlet的工作原理&#xff0c;Servlet的工作原理跟小猪同学食堂就餐的过程很类似。小猪同学点了烤鸡腿&#xff08;要奥尔良风味的&#xff09;&#xff0c;食堂窗口的服务员记下了菜单&#xff0c;想了想后厨的所有厨师&#xff0c;然后将菜单和餐盘交给专门制…

RabbitMQ运行机制

消息的TTL&#xff08;Time To Live&#xff09; 消息的TTL就是消息的存活时间。 • RabbitMQ可以对队列和消息分别设置TTL。 • 对队列设置就是队列没有消费者连着的保留时间&#xff0c;也可以对每一个单独的消息做单独的 设置。超过了这个时间&#xff0c;我们认为这个消息…

什么是溶血症?什么是ABO溶血?溶血检查些什么?

什么是溶血症&#xff0c;什么是ABO溶血&#xff1f;女人是O型血&#xff0c;男人是其他血型的夫妻配对&#xff0c;最担心的是胎儿溶血症。从理论上讲&#xff0c;只要夫妻双方血型不同&#xff0c;母亲一定缺乏胎儿从父亲那里遗传的抗原。当任何人接触到他们缺乏的抗原时&…

Vue+node.js火车票订票系统vscode开发的

该系统的基本功能包括管理员、用户二个角色功能模块。 对于管理员可以使用的功能模块主要有&#xff0c;首页、个人中心&#xff0c;用户管理、系统公告管理、车次管理、车票信息管理、订票信息管理、系统管理等功能。 对于用户所使用的功能模块的操作主要是首页、个人中心、订…

【python百炼成魔】手把手带你学会python数据类型

文章目录前言一. python的基本数据类型1.1 如何查看数据类型1.2 数值数据类型1.2.1 整数类型1.2.2 浮点数类型1.2.3 bool 布尔数值类型1.2.4 字符串类型二. 数据类型强制转换2.1 强制转换为字符串类型2.2 强制转换为int类型2.3 强制转换函数之float() 函数三. 拓展几个运算函数…

2023年华为HCIA-Datacom认证视频课

一、下载地址&#xff1a;https://edu.csdn.net/learn/38282/607342?spm1003.2001.3001.4157 一、课程大纲 2023年华为考试大纲 考试分数章目录小节80第1章&#xff1a;网络参考模型1.1OSI网络参考模型介绍1.2OSI网络参考模型各层的作用1.3 OSI与TCP/IP模型的比较1.4 TCP与U…

【转载】通过HAL库实现MODBUS从机程序编写与调试-----STM32CubeMX操作篇

通过HAL库实现MODBUS从机程序编写与调试-----STM32CubeMX操作篇[【STM32】RS485 Modbus协议 采集传感器数据](https://blog.csdn.net/qq_33033059/article/details/106935583)基于STM32的ModbusRtu通信--ModbusRtu协议(一)基于STM32的ModbusRtu通信--终极Demo设计(二)STM32RS48…

TensorRT的C++接口解析

TensorRT的C接口解析 文章目录TensorRT的C接口解析3.1. The Build Phase3.1.1. Creating a Network Definition3.1.2. Importing a Model using the ONNX Parser3.1.3. Building an Engine注意&#xff1a;序列化引擎不能跨平台或 TensorRT 版本移植。引擎特定于它们构建的确切…

“黑铁时代”,地产人如何以客户视角加速房企数字化转型

本文从行业洞察、业务设计、数据建设以及实践探索四个部分详细阐述地产行业数字化的实践、思考和理解。点击文末“阅读原文”&#xff0c;观看完整版直播回放并下载演讲文档。一、洞察&#xff1a;房企经营思路的变化企业的转型都是围绕着业务经营变化进行的&#xff0c;房企数…

P1307 [NOIP2011 普及组] 数字反转

[NOIP2011 普及组] 数字反转 题目描述 给定一个整数 NNN&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff08;参见样例 2&#xff09;。 输入…

电源口防雷器电路设计方案

电源口防雷电路的设计需要注意的因素较多&#xff0c;有如下几方面&#xff1a;1、防雷电路的设计应满足规定的防护等级要求&#xff0c;且防雷电路的残压水平应能够保护后级电路免受损坏。2、在遇到雷电暂态过电压作用时&#xff0c;保护装置应具有足够快的动作响应速度&#…

Git:单台电脑同时配置多个git账号

问题说明 现在云端仓库很多&#xff0c;有开源中国的 gitee.com 、微软的 github.com 、还有 gitlab.com 和 bitbucket.org 等等&#xff0c;当我们想同一台电脑链接多个云端仓库时&#xff0c;就需要设置不同的用户、邮箱生成不同的密钥进行链接。 解决方案 下载安装Git 我的…

【Java】容器+数组+集合

一、数组 Java语言中的数组是一种引用数据类型&#xff1b;不属于基本数据类型数组当中既可以存储“基本数据类型”的数据&#xff0c;也可以存储“引用数据类型”的数据&#xff08;数组既可以存储基本数据类型&#xff0c;又可以存储引用数据类型&#xff0c;基本数据类型存…