首页 > 其他分享 >学习报告-论对“整体二分”的新理解

学习报告-论对“整体二分”的新理解

时间:2025-01-18 20:55:45浏览次数:1  
标签:二分 log 整体 理解 论对 答案 区间 我们

学习报告-论对“整体二分”的新理解

二分我们都知道,我们一般会通过二分具有单调性的答案来找到一个最接近某个点的答案。

我们可能在以后的学习中遇到一些题,其答案是具有单调性的,但是如果让你在下面构造一个序列,或者构造一些答案,这些答案是无法二分的,只能“根据答案求过程”。然而当我们求出答案以后,再把这个过程凑出来如何容易!而且如果没有过程,我们也不能求出答案。这就引入了整体二分。

整体二分的作用场景:在询问许多区间的时候,如果对于每个询问都二分,时间复杂度是 \(O(Qn \log n)\) 的,必然会 \(\color{Blue}\texttt{TLE}\),但是如果我们运用预处理的思想,把所有询问离线存储,一次二分解决所有问题,时间复杂度 \(O(n\log n)\),就可以通过。

欸,我们看到了两个关键词:区间,二分。区间使我们联想到线段树,线段树使我们联想到分治,分治使我们联想到 \(O(\log n)\),而二分也是 \(O(\log n)\) 的。这是不是说明,整体二分的时间复杂度约为 \(O(n\log^2 n)\)?

其实不然。如果是那样的话,我们实质上还是对每个区间做了分别操作,时间还是不会低于 \(O(Qn\log n)\)。真正的整体二分是边二分边分治,时间复杂度 \(O(n\log n)\)。

具体怎么做呢?我们设当前正在处理的区间为 \([L,R]\),当前区间的值域为 \([l,r]\),我们二分的时候把询问区间按照其某个性质与 \(mid\) 的关系排序,\(>mid\) 的放一边,\(\le mid\) 的放一边,然后再递归处理。

好,回到我们的引入。为什么我们说,有一些答案具有单调性的构造(序列)题也可以使用整体二分?这是因为序列实际上可以看成很多很多的区间,很多很多的区间又可以看成互不干涉的区间查询,最后我们把这些区间的答案依个输出,得到整体的答案。所以很多整体二分题一般不会把区间询问摆在明面上,而是伪装成构造题让我们解答。当我们发现某些构造题的最优答案具有单调性——要注意了——这很可能就是整体二分。

标签:二分,log,整体,理解,论对,答案,区间,我们
From: https://www.cnblogs.com/KarmaticEnding/p/18678846

相关文章

  • 【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信
    Linux探索学习:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:在Linux操作系统中,进程通信(IPC)是操作系统的一项核心功能,用于在不同进程之间交换数据或信号。这种能力在多任务操作系统中尤为重要,因为进程之间通常需要协作完成复杂......
  • Flask Web开发实战:入门、进阶与原理解析PDF免费下载
    适读人群:本书适合了解Python基本语法,想要自己动手做网站的编程人员;熟悉Python。想要从事PythonWeb开发的后端工程师、运维工程师和爬虫工程师;香葱Django等其他PythonWeb框架转向Flask的Python工程师阅读。PythonWeb框架Flask开发团队成员撰写,内容全面,从基础知识到进阶实战,再到......
  • 深入理解 DHCP:原理、中继及应用实践
    目录深入理解DHCP:原理、中继及应用实践一、DHCP原理剖析(一)诞生背景与作用(二)工作过程详解(三)其他报文介绍二、DHCP中继功能解析(一)引入中继的原因(二)工作机制(三)中继代理信息的作用(四)负载均衡配置三、总结在当今网络无处不在的时代,设备如何获取网络配置信息至关重......
  • 【Linux系统】深刻理解软硬链接
    1、操作层面软链接先说结论:软链接本质是一个独立的文件先创建一个文件file.txt再创建一个软链接:命令ln-sfile.txtfile-soft.link(后者链接前者)软链接的名字和后缀随便取的使用命令ls-li查看,你可以发现两个文件有着不同的inode号,即可证明这两个属于不同......
  • 下载量34w的爆火神书《深入理解深度学习》中英文版pdf及配套代码、ppt分享
    本书介绍《深入理解深度学习》这本书自发布以来,英文电子版下载量已突破34.4万次,实体书则于去年12月面市,共541页。值得注意的是,电子版内容仍在持续更新。作者在网站上提供了68个Python笔记本练习,旨在帮助读者通过编程实践来加深对深度学习的理解。这本书的目标是以清晰易懂......
  • String类及其衍生类的简单理解
    String类及其衍生类的简单理解StringString指的是字符串的类,在java中,它是不可以更改的。1.下面简单介绍两种构造方法。publicclasshaohaoxuexi{publicstaticvoidmain(String[]args){Stringa=newString();Stringb="abc";}}这是两......
  • 深入理解 Linux systemd 单元类型及配置详解
    深入理解Linuxsystemd单元类型及配置详解在Linux系统中,systemd是一种强大的初始化系统和服务管理工具,它通过**单元(Unit)**来管理服务、文件系统、设备等。systemd支持多种单元类型,如服务单元(.service)、目标单元(.target)、挂载单元(.mount)、设备单元(.device)、计时单元(.t......
  • 你有用过弹性布局吗?说说你对它的理解
    当然,弹性布局(Flexbox)是前端开发中常用的一种布局方式,它提供了一种更加灵活和高效的方式来创建复杂的布局结构,特别是当你的设计不仅仅是基于简单的块级或行内文本流时。以下是我对弹性布局的理解:基本概念:弹性布局是一种CSS布局模式,它允许你设计复杂的布局结构,而无需使用浮动或定......
  • 你上家公司有写日报、周报或者月报吗?说说你对写日(周、月)这事的理解
    在我之前的公司,我们确实有写日报、周报和月报的习惯。这些报告不仅用于记录我们的工作进展,还是与团队成员和上级进行沟通的重要工具。以下是我对写日(周、月)报这件事的理解,特别是在前端开发领域:一、日报日报主要用于记录当天的工作内容和遇到的问题。对于前端开发者来说,日报可以......
  • 对需求的理解与实践
    一、什么是好的需求需求的质量重于数量:需求并非越多越好,也并非越详细越好。一个好的需求应属于一系列关联需求的一部分,这些需求共同支撑一个发布版本,并为用户提供明确的价值。验收条件:每个需求应有明确的验收条件,达到这些条件即视为需求完成。可讨论与不可讨论的部分:需求......