首页 > 其他分享 >二分笔记

二分笔记

时间:2023-09-10 12:33:34浏览次数:35  
标签:二分 -- 扩展 笔记 枚举 区域 答案

二分优点,加快在有序数列中,蓝红区域的扩展,朴素算法缓慢进行.如何扩展,用灰色区域

的中点来判断,然后扩展颜色区域,灰色区域会不断减少,只要logn次就能把灰色区域长度

缩小为0

 

 l在哪里,哪里就是蓝色,r同理,假设没有蓝色区域,赋值0(保留了一个位置)会导致,扩展过程中,红色一直扩展

直到两者相遇,l+1=r,导致错误(不满足条件),所以要指向数组两边

 注意当l+1=r时候会退出循环体,不进行计算

 注意细节,如果m处于最后一个元素边界更新时候越过中点可能会红蓝边界出错

出于正确性易懂性,写成l=m||r=m

 注意分界线要保持唯一性,最后都会回到第一种情况

 

 

 不看图--如何思考--红蓝对立

前提保证数据中一定有5的存在,没有分界线就不好找了(程序不好找)

 做题思路,一开始先暴力枚举,过不了再优化

浮点数二分:for循环用小数会出现问题,递增控制在很小才能算出来,基本枚举不出来

考虑别的算法优化--二分,精度太高的时候,四舍五入下左右没有区别

二分答案模型

 二分答案,最大化答案,最小化答案

 最大化查找写成一个check函数,可行区内,返回真,l右移拓展,记住答案是x

最大化,越大越好,但不能超过条件,最小化,越小越好,但不能小于条件,输出答案为x,条件为y

 y的条件并不一定取等号的时候取到x的最值,满足条件时候即可

 x作为最短跳跃距离,不可能有比他还小的,从头到尾枚举一边把比他小的移开,大的保留

枚举跳跃距离不断二分就可以找到答案,模拟过程,累加计数

谁y谁x想哪个量随着哪个量变化.

差分技巧,把一段区间修改弄成两个点(头和尾,相加为0区间修改,目的是消除对后端的影响

 然后求前缀和

最大值最小问题,x是伤害,y是走得通1,走不通0

 

标签:二分,--,扩展,笔记,枚举,区域,答案
From: https://www.cnblogs.com/zhoncai45/p/17670045.html

相关文章

  • CMU15721 笔记:Project 1 - Foreign Data Wrapper
    CMU15-721Project1-ForeignDataWrapperPre2003年,SQL标准中增加了一个访问远程数据的规范,称为外部数据的SQL管理(SQL/MED)。从9.1版开始,PostgreSQL就开始开发这个特性来实现SQL/MED的一部分。在SQL/MED中,远程服务器上的表称为外部表。PostgreSQL的外部数据包裹......
  • 第一、二章学习笔记
    Unix/Linux系统编程学习笔记第一章、第二章知识点归纳以及最有收获的内容一.进程与线程Unix/Linux系统中,进程是程序的执行实例,而线程是进程内的执行单元。进程之间通常是独立的,而线程共享进程的资源。最大的收获是理解了进程与线程之间的区别,以及它们如何协同工作。进程(Proc......
  • 《阿里大数据之路》读书笔记:第三章 数据同步
    第三章数据同步数据同步技术含义:不同系统间的数据流转,有多种不同的应用场景。应用场景:同类型不同集群数据库之间的数据同步主数据库与备份数据库之间的数据备份主系统与子系统之间的数据更新不同地域、不同数据库类型之间的数据传输交换大数据系统中的数据同步数据从业务系统同步......
  • 学习笔记-计算机病毒对抗技术-高级反病毒
    虚拟机技术1、虚拟CPU2、虚拟进程环境3、虚拟执行进程代码虚拟机在反病毒领域中的应用1、处理变形病毒2、基于虚拟机技术的行为判定病毒与虚拟机的对抗云查杀技术启发式扫描技术1、动态启发式2.静态启发式主动防御技术1、获得SSDT表2、在SSDT表中定位要替换的函数地址的位置3、使用......
  • Python学习笔记-Python判断语句
    布尔类型和比较运算符布尔类型进行判断,只有2个结果:是否程序中,如何描述:是或否?使用:布尔类型。Python中常用的6种值(数据)的类型类型描述说明数字(Number)支持整数(int)浮点数(float)复数(complex)布尔(bool)整数(int),如10、-10浮点数(float),如13.14、-13.14复数(complex),如4+3j,以j结尾表示复数布尔(bool)......
  • 离散数学笔记——集合
    离散数学笔记——集合集合的概念集合是由一些确定的元素所组成的整体,其中的元素可以是任何事物定义:A={a1,a2,a3,...,an}表示集合的名称,{}表示集合的符号。a1,a2,a3,...an表示集合中的元素x∈A表示元素x属于集合A集合的特点集合没有重复元素集合......
  • 软件设计开发笔记4:QT操作SQLite数据库
      有时候我们需要在软件中记录一些历史数据以便于对数据的查询。而我们希望软件不能太复杂,体量也不要太大,这个时候就需要如SQLite这样轻量级的数据库。这篇中我们就来讨论如何在使用QT开发应用是操作SQLite数据库。0、概述  SQLite是一款开源、轻量级、跨平台的数据库,无需Se......
  • Seeing What You Said: Talking Face Generation Guided by a Lip Reading Expert 论
    最近一直在看虚拟人像. 最关键的论文就是wav2lip.目前项目中也是用的这个.一个视频加一个语音,就可以生成用视频里面的头,加语音的新视频.现在看这篇论文SeeingWhatYouSaid:TalkingFaceGenerationGuidedbyaLipReadingExpert.主要是搜了没有相关论文,所以就自己......
  • python学习笔记-celery介绍和使用
    一、celery介绍1、简介celery是分布式任务队列celery在执行任务时需要一个消息中间件来接收和发送消息,以及存储结果,一般使用rabbitmq,rediscelery的优先:简单:配置和使用比较简单高可用:当任务失败或执行过程中连接中断,celery会自动尝试重新执行快速:每分钟可处理上百万个任务灵活:几......
  • Node.js+Express+Koa2开发接口学习笔记(一)
    http请求概述浏览器输入一个地址后,进行DNS解析(通过域名查找对应的IP地址),与server建立TCP连接(进行三次握手),发送http请求server接收到http请求,处理,并返回客户端(这里指浏览器)接收到返回数据,处理数据(如渲染页面,执行js)客户端与服务器的三次握手大致可以理解为:第一次握手:客......