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

学习笔记:莫队

时间:2023-09-15 20:13:58浏览次数:28  
标签:分块 复杂度 笔记 学习 sqrt 端点 区间 莫队

前言

byd 最近的人天天都在学这个 我也来看一看

0 概念

什么是莫队
可以先去看看分块 这样就很好理解

先丢出一个问题:

  • 给出 \(m\) 个区间 \(l,r\) 求区间众数

这就是蒲公英 在线用分块可以做到 \(O(n\sqrt n)\) 的复杂度
现在我们思考一下
线段树可以做什么?满足区间合并的问题
树状数组可以做什么?满足区间相减的问题
如果这两都做不了?
这下我们的乱搞神器莫队就出来了
它有 \(O(n\sqrt n)\) 的优秀时间复杂度

1 普通莫队

有很多问题 每个重复求很麻烦 不妨按照一个顺序来做
第一步思考:按 \(l\) 左端点排序 时间复杂度 \(O(n^2)\)
太慢了!
莫队思路:首先,按 \(l\) 左端点所处在的块排序 同一块内的按右端点排
这样,块长为 \(S=\sqrt n\) 总共有\(\frac{n}{S}\) 块
每个询问左端点时间复杂度遍历是 \(O(S)\) 的 右端点是 \(O(n)\)的均摊时间复杂度
时间复杂度 \(O(n\sqrt n)\)
好!

标签:分块,复杂度,笔记,学习,sqrt,端点,区间,莫队
From: https://www.cnblogs.com/g1ove/p/17705838.html

相关文章

  • 【算法进阶课】动态规划笔记
    基环树DP一些基本概念:在一棵树上加一条边,就会构成一个环,环上会挂着一些子树。基环树是只有一个环的仙人掌。如果基环树的边是有向边,环上的点是p1,p2,p3,...则环上的边是p1->p2,p2->p3,...,pn->p1或者全部反过来总之就是环上的边要么全部逆时针要么全部顺时针。对于......
  • Kruskal重构树 学习笔记
    Kruskal重构树最大生成树将部分内容倒置即可回顾:Kruskal基本信息求解最小生成树时间复杂度:\(O(m\logm)\)更适合稀疏图算法思想按照边权从小到大排序依次枚举每一条边,如果这一条边两侧不连通,则加入这条边代码点击查看代码#include<bits/stdc++.h>#define......
  • 机器学习从入门到放弃:如果优化让机器学习的更好?
    一、前言在真正的工程应用中,模型训练也许更为重要,特别是对于生成式模型来说,无论是NLP领域或者GNN领域所产生的内容是否适用,在直觉上我们可以可以清晰的辨别。但是具体在模型上我们怎么调整就是一个类似黑盒的概念,我们一般通过更多的特征向量,和更深层次的神经网络架构来实......
  • sql 基础学习(一)
    创建一个数据表--目标:创建一个school数据库--创建学生表(列,字段)--学号int登录密码varchar(20)姓名,性别varchar(2),出生日期(datatime),家庭住址,email--创建表之前,一定要先选择数据库代码如下:CREATETABLEIFNOTEXISTS`student`(`id`int(4)NOTNULL......
  • 【从零学习python 】07.Python运算符详解:赋值、比较和逻辑运算符
    赋值运算符基本赋值运算符运算符描述实例=赋值运算符把=号右边的结果赋给左边的变量,如num=1+2*3,结果num的值为7单个变量赋值:num=10num同时为多个变量赋值(使用等号连接):a=b=4ab多个变量赋值(使用逗号分隔):num1,f1,str1=100,3.14......
  • 《信息安全系统设计与实现》第二周学习笔记
    《信息安全系统设计与实现》第二周学习笔记第九章I/O库函数系统调用系统调用函数open()read()write()lseek()close()I/O库函数fopen()fread()fwrite()fseek()fclose()I/O库函数的算法fread算法:第一次调用fread()时候,FILE结构体的缓冲区时空的,fread(......
  • 3dmax自用快捷键笔记
    3dmax自用快捷键笔记G隐藏或显示网格ALT+W全屏模式ALT+Q独立显示ALT+X物体透明显示W移动Z找回物体缩放模式(大化)CTRL+Z撤回(最多撤回9步)F1帮助文件F3线框显示F4明暗处理+边面M材质编辑器J框显示切换A角度捕捉S......
  • 设计学习计划相关接口
        ......
  • 设计查询学习记录接口
        ......
  • Qemu源码分析(2)—Apple的学习笔记
    一,前言最近从main开始看了opt参数相关的解析,这个比较简单我就不写了,然后当时我搞不清楚的是MachineClass和TypeImpl类的关系。本节主要分析的其实就是分析machine_class怎么来的,其实也就是machine_class=select_machine();二,源码分析关于mc的来历type_initialize中ti->class->ty......