首页 > 其他分享 >莫队 学习笔记

莫队 学习笔记

时间:2022-10-10 16:57:00浏览次数:84  
标签:复杂度 离线 笔记 学习 sqrt 端点 Theta 莫队

基本莫队

询问离线,按块排序,\(\sqrt n\) 分块,两个指针来回扫。
总时间复杂度为 \(\Theta(n\sqrt n)\)。

带修莫队

考虑增加一维时间戳(当前修改次数)。
在原有基础上,若左右端点在同一块内,按照时间戳排序。
注意每次处理到一个修改操作之后要取反。
块长取 \(n^{2 \over 3}\),总时间复杂度为 \(\Theta(n^{5\over 3})\)。

树上莫队

例题
将上的路径转为欧拉序,变成一段区间。
其他的与上面两种类似。

回滚莫队

例题
有时候对于区间取 min 与取 max 操作很难缩小区间,但容易扩大区间,考虑回滚莫队。
与普通莫队一样,先排序(右端点升序)。
先将左右端点同块的区间暴力求解。
对于左右端点不同块的,右端点可以一直向后走(升序),左端点对于每一次询问,从当前块的右端点重新开始枚举,向左拓展。
右端点移动是 \(\Theta(n)\) 的,共 \(\sqrt n\) 次,左端点移动是 \(\Theta(\sqrt n)\)的,共 \(n\) 次,暴力是 \(\Theta(n \sqrt n)\) 的。
故总时间复杂度是 \(\Theta(n \sqrt n)\)。

莫队二次离线

例题
对于一些可以莫队,但更新答案的时间不是 $\Theta(1) $ 的题目可以用二次离线。
考虑每次指针移动带来的贡献,设变化为 \([l,r] \to[l,r+k]\)。
统计 \(\forall x \in [r+1,r+k]\) 对于 \([l,x-1]\) 的贡献。
先差分一下,变成 \(f([1,x-1])-f(1,l)\) 的贡献,左端点的移动也是类似的,变成\(f([1,r])-f([1,x-1])\)。
对于形如 \(x\) 对 \([1,x-1]\) 的贡献可以预处理,在莫队移动端点时直接记入答案。现在考虑怎么处理形如 \(x\) 对 \(f([1,l])\) 的贡献。
考虑将它们离线下来,用类似扫描线的做法维护
发现对于很多询问,它们的 \([1,l]\) 的 \(l\) 是形似的。考虑把它们记在 \(l\) 下。现在我们用 \(\Theta(n\sqrt n)\) 的询问和 \(\Theta(n)\) 的修改,所以需要一种 \(\Theta(\sqrt n)\) 修改 \(\Theta(1)\) 的查询的算法。
一般采用用分块维护前缀的大块信息与小块信息
总时间复杂度 \(\Theta(n\sqrt n)\),空间复杂的 \(\Theta(n)\)

标签:复杂度,离线,笔记,学习,sqrt,端点,Theta,莫队
From: https://www.cnblogs.com/Matutino-Lux/p/16776292.html

相关文章

  • 《Antenna Selection Guide》阅读笔记(三):天线参数
    5天线参数-AntennaParameters在为无线设备选择天线时,需要考虑的一些重要的事情有:辐射如何在天线周围的不同方向上变化、天线的效率如何、天线具有期望性能时的带宽多大......
  • Python学习路程——Day11
    Python学习路程——Day11函数参数在使用函数参数时,一般情况下所需要遵循的规范: 越短的、越简单的、越靠前 越长的、越复杂的、越靠后同一个形参在调用的时候不能多......
  • STM32开发笔记
    @目录前言总结中断温度采集版本KEIL4里面添加BAT文件大小端模式volitale关键字STM32的引脚电压多少伏算高电平,多少伏算低电平问题串口通讯当使用9600波特率的时候,通讯稳定,......
  • 【学习笔记】HTTP
    HTTP 什么是httpHTTP:超文本传输协议,是一个简单的请求-相应协议超文本:图片、视频、音乐、定位默认端口:80HTTPS:以安全为目标的HTTP通道,在HTTP的基础上加入......
  • k8s笔记
    k8s笔记一、集群管理#查看集群kubectlcluster-info二、node管理#查看nodeskubectlgetnodes#通过标签筛选nodekubectlgetnodes-lgpu=true#给node添加标签kubectl......
  • JavaScript高级程序设计笔记04 变量、作用域与内存
    变量、作用域与内存变量特定时间点一个特定值的名称。分类原始值:按值访问复制:两个独立使用、互不干扰引用值(由多个值构成的对象):按引用访问操作对象时,实际上......
  • 你真的会记笔记吗?支持高效分类记笔记的软件
    对于不少上班族或大学生来说,如果想要随手记录笔记内容,使用手机或电脑上的笔记软件是更加便利的。因为与传统的纸质笔记本记录方式相比,使用笔记软件来记录笔记,不仅支持文字......
  • 2022第一次学习任务
    2022第一次学习任务内容比较多:)A.环境配置安装虚拟机(这部分我很早就完成了,具体步骤就不详细说明了)安装vm及Linux系统镜像这一部分步骤比较清晰,主要参考VMware虚拟......
  • 【笔记】分层图DJ
    分层图的题都很麻烦地要在dijkstra外面套个循环,其实可以不用。以经典模板[JLOI2011]飞行路线为例,给DJ的优先队列里面的点加一维状态\(k\),\(f(u,k)\)可以免费转移......
  • stat(1)学习/mystat实现
    stat(1)关于statstat命令主要用于显示文件或文件系统的详细信息,该命令的语法格式如下:-f:不显示文件本身的信息,显示文件所在文件系统的信息-L:显示符号链接-t:简洁模式,只......