首页 > 其他分享 >整体二分 学习笔记

整体二分 学习笔记

时间:2024-10-11 22:32:56浏览次数:8  
标签:二分 log 递归 mid 笔记 学习 修改 每个

整体二分

本文通过介绍几道例题的解法,带你深入了解整体二分的精髓。

例题

大致按难度排序,其中,中间的三道题都是类似的。

简介

给你 \(Q\) 个询问,每个询问形如第 \(k\) 小是什么或某个点什么时候符合所给条件(达到一定数量),中间可能带有修改,并且不强制在线。

一般来说,如果 \(Q\) 个询问可以分别每次用二分的方式求答案,那么我们可以把这 \(Q\) 次询问合在一起做一个分治递归,这就是整体二分。

多说无用,直接看例题。

P3527 [POI2011] MET-Meteors

我们要求每个国家在什么时间满足条件,所以二分时间。

我们设 \(solve(l,r,S)\),表示已知 \(S\) 这个集合中每个国家的答案都在 \([l,r]\) 的区间内,然后求出它们具体的时间。

设 \(mid=\lceil{\dfrac{l+r}{2}\rceil}\)。

我们可以把时间在 \([l,mid]\) 的修改执行。

之后判断 \(S\) 中的每个国家,是否已满足条件,是则说明它的答案在 \([l,mid]\) 内,否则在 \([mid+1,r]\) 内。

我们可以新建两个 vector 把 \(S\) 分掉,然后往两边递归。

考虑右区间 \([mid+1,r]\) 需要用到 \([l,mid]\) 修改的贡献,所以可以这样:

  • 先递归右区间 \([mid+1,r]\)。
  • 清除 \([l,mid]\) 修改的共线。
  • 递归左区间 \([l,mid]\)。

我们可以用树状数组处理修改带来的贡献。

考虑复杂度,默认各数据同阶。

最多往下递归 \(O(\log n)\) 层。

对于每个时间的修改,它在每层都出现,而在树状数组上修改贡献是 \(O(\log n)\) 的。每个时间的修改的总数是 \(O(n)\) 的,于是修改是 \(O(n\log ^2n)\) 的。

对于查询,一个国家在每层出现一次,每次 \(O(\log n)\) 查询,于是也是 \(O(n\log^2n)\) 的。

总复杂度 \(O(n\log ^2n)\)。

注意到这题的修改和查询没有什么其他限制,我们可以把树状数组换成差分,然后扫一遍即可,然后要记录每个国家当前的贡献和修改前的贡献,复杂度降为 \(O(n\log n)\)。

标签:二分,log,递归,mid,笔记,学习,修改,每个
From: https://www.cnblogs.com/dccy/p/18459497

相关文章

  • DLJD_Docker学习_01
    第1章Docker概述1.1课程引入开发/运维互掐1.1.1开发与测试和运维间的矛盾,主要是由于环境的不同而引发的。如果能将开发人员使用的环境交给测试与运维使用,这些问题就都能解决。1.1.2DevOpsDevOps是一种思想,是一种管理模式,是一种执行规范与标准。它主要是用于促进开发、......
  • ### 100th 2024/9/8 WQS二分小结
    破百了,路长了这个世界,能听见我的回响吗?循环了很久很久的Echoism回望了过去,也要认真注视当下的现实了对吗?来看看WQS二分可以用上的题目有Raper,Gmoj的coffee和划分序列这几题都有一个共同的特点,就是要从n个中恰好选k个的极值而他们的取值都有一个共性,就是关于k,该函数的形状......
  • springboot+vue基于springboot+vue的线上学习系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和信息技术的不断革新,线上学习系统逐渐成为教育领域的重要组成部分。近年来,受疫情影响,线上学习需求更是急剧增长,为教育领域带来了前所未有的挑战与机遇。传统的线下教学模式已经难以满足现代教育的多元化需求......
  • python基于django 在线学习与推荐系统的设计与实现
    目录技术栈具体实现截图编码规范开发技术介绍系统的稳定性和可维护性核心代码部分展示详细视频演示python大数据库爬虫题目推荐源码获取方式技术栈系统界面应简洁易懂,用户使用时一目了然,操作不应包含过多步骤或包含难以理解的操作,每个请求操作应给出成功或失败的具......
  • 《Pytorch深度学习实践》P3梯度下降法 笔记+代码+图像:梯度下降、随机梯度下降、小批量
    目录梯度下降(BatchGradientDescent)随机梯度下降(StochasticGradienDescent,SGD)小批量随机梯度下降(Mini-batchGradientDescent)梯度下降(BatchGradientDescent)介绍:使用所有的训练样本计算梯度,并且在每次迭代中更新权重。原理:假设有一个损失函数,它依赖于参数。通过最......
  • 机器学习——量子机器学习
    量子机器学习:未来的机器学习方法量子计算和机器学习的结合为计算科学带来了前所未有的前景。量子机器学习(QML)正在迅速发展,目标是利用量子计算的优势来处理传统计算机无法高效解决的问题。本文将深入探讨量子机器学习的基本概念、量子计算的关键技术、具体的量子算法,以......
  • 二分图全面学习笔记
    二分图全面学习笔记Part1:二分图的定义与判定方法首先,我们要知道二分图的定义是什么。二分图的定义​ 如果一张无向图的\(n\)个节点可以分成\(A,B\)两个不相交的非空集合,并且同一个集合之中的两个点之间没有边相连接,那么称该无向图为二分图(BipartiteGraph)举个栗子很......
  • 【动物识别系统】Python+卷积神经网络算法+人工智能项目+深度学习+计算机课设项目
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作......
  • 【交通标志识别系统】Python+卷积神经网络算法+人工智能+深度学习+图像识别+计算机课
    一、介绍交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Dj......
  • Communication-Efficient Learning of Deep Networks from Decentralized Data论文阅
    联邦学习开山之作Communication-EfficientLearningofDeepNetworksfromDecentralizedDataabstractIntroductionTheFederatedAveragingAlgorithmExperimentalResultsConclusionsandFutureWorkCommunication-EfficientLearningofDeepNetworksfromDec......