当前位置: 首页 > news >正文

关于莫队算法

莫队算法,优雅的暴力~

先来一道例题

P3901 数列找不同

引入:如何解决?
  1. \(O\)(\(n^2\))

    每次读入询问区间\(l至r\)暴力判定!

  2. 如何优化?

    已经知道区间l至r,可以\(O(1)\)扩展至区间l+1至r~

  3. 询问无序,如何解决步子过大,复杂过高???

    离线询问排序!

  4. 如何排序?

    分块思想,以\(sqrt(n)\)为一块,左右端点进行排序

中间:代码模板?
  1. 单点添加
  inline void add(int x){//添加x位置的数if(to[x]==1) cnt++;to[x]++;}//to是桶,cnt是计数的
  1. 单点删除
  inline void del(int x){//删除x位置的数if(to[x]==2) cnt--;to[x]--;}//与上同理~
  1. 询问离线
  struct question{//结构体int lz,rz,id;//记录询问左右端点,询问编号}qu[M];
  1. 询问排序
  inline bool cmp(qur a,qur b){return pos[a.lz]==pos[b.lz]?a.rz<b.rz:pos[a.lz]<pos[b.lz];}//

然后你会发现相当于每次移动左右指针,但是移动次数减少的同时,解决的询问也多了。

http://www.jsqmd.com/news/22988/

相关文章:

  • Serilog 日志库的简介
  • 2025东莞环评公司/环评手续/环评报告/环评验收推荐:广东三洁环保,专业高效,合规保障
  • word文档使用技巧----一键插入题注
  • 再见 懦弱者的泪滴 善恶判断舍弃 永别 那廉价的正义
  • 2025年东莞环评公司权威推荐榜:环评手续/环评报告/环评验收一站式服务,专业高效合规首选厂家
  • 【CI130x-离在线】FreeRTOS的信号量
  • 践行 “学思行”,解锁学习新境界
  • [java 虚拟线程 ]
  • 【ArcMap】按属性表复制字段并上移一段距离
  • WPF 关闭程序 Aforge摄像头关闭不了 问题
  • 102302139 尚子骐 数据采集与融合作业1
  • CF1152F2 Neko Rules the Catniverse (Large Version) 题解
  • Audacity:开源音频编辑器的完整指南
  • 【CI130x】音频传输的数据结构——FreeRTOS的消息队列
  • 123456789
  • #20232408 2025-2026-1 《网络系统与攻防技术》实验三实验报告 - 20232408
  • C_结构体学习_1
  • 量子力学作业3
  • 嵌入式音频开发很好的博主
  • 人工智能之编程基础 Python 入门:第一章 Python 的简介和安装
  • P5405 [CTS2019] 氪金手游 题解
  • 杂记选做 #1
  • 20232319 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 数据采集与融合技术实践第一次作业
  • 2025.10.26 闲话-单位根反演
  • 题解:B4205 [常州市赛 2021] 特殊字符
  • 郭念海 - coder
  • 软考五
  • ECC 学习笔记
  • Halcon算法——区域生长