首页 > 其他分享 >莫队

莫队

时间:2023-09-23 20:55:25浏览次数:20  
标签:询问 离线 times 端点 排序 莫队 size

使用场景:

  • 1.离线算法
  • 2.静态区间询问
  • 3.对于询问\([L,R]\),可以\(O(1 / log)\)从\([L+1,R]\)或\([L,R-1]\)转移过来

算法思想:

将\(L\)视为横轴,\(R\)视为纵轴,则一次区间询问可以视为坐标系中的一个点。\(Q\)次询问的转移构成一棵生成树。当取曼哈顿距离的最小生成树,转移的总代价相等。

代码实现:

  • 1.将询问离线,分块
  • 2.将询问排序,第一关键字为左端点,第二关键字为右端点(若左端点在同一个块里,右端点从小到大排序,否则左端点从小到大排序)

时间复杂度分析:
设块的大小为\(size\)(左端点之差小于等于\(size\))
一个块里:右端点单调,最多复杂度\(O(n)\),左端点一次最多移\(size\)次,时间~\(O(m \times size + n \times (\frac{n}{size}))\)

奇偶优化:

在奇数块里右端点升序,在偶数块里右端点降序。
为什么会有优化呢?很直观,相邻两个块之间左端点跳的次数会变小

标签:询问,离线,times,端点,排序,莫队,size
From: https://www.cnblogs.com/wangwenhan/p/17725034.html

相关文章

  • 学习笔记:莫队
    前言byd最近的人天天都在学这个我也来看一看0概念什么是莫队可以先去看看分块这样就很好理解先丢出一个问题:给出\(m\)个区间\(l,r\)求区间众数这就是蒲公英在线用分块可以做到\(O(n\sqrtn)\)的复杂度现在我们思考一下线段树可以做什么?满足区间合并的问题......
  • 可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫
    P8946TheLostSymbol这种类型的dp的特点就是大部分转移形如\(f(i,j)\rightarrowf(i+1,j+1)\)之类的,并且当以上转移出现时原数组被清空,这就可以用一个deque来维护,然后对于全局赋值/全局加,需要对每个位置维护一个时间戳,并记录上一次赋值/加是什么时候,以便标记下传。(貌似......
  • #10 有人写莫队不设块长,除0调了半天
    JeffandRemovingPeriods题面因为删除后可以任意排序,所以除第一次删除,每次都可以删去一种颜色,统计区间中有多少种颜色,可以使用莫队维护。对于第一次操作,如果其不能删去一种颜色,则操作次数加一,反之不变。因此我们问题变为了判断区间中是否存在颜色,使得这些颜色对应的位置形成等......
  • 【普通莫队】2023牛客多校5 A
    简介莫队算法是由莫涛提出的算法。在莫涛提出莫队算法之前,莫队算法已经在Codeforces的高手圈里小范围流传,但是莫涛是第一个对莫队算法进行详细归纳总结的人。莫涛提出莫队算法时,只分析了普通莫队算法,但是经过OIer和ACMer的集体智慧改造,莫队有了多种扩展版本。莫队算法可......
  • 莫队算法学习笔记
    莫队普通莫队这个很基础。带修莫队就在普通莫队的基础上加上时间这一维度。[P1903国家集训队]数颜色/维护队列回滚莫队为什么要回滚?因为有些信息不好撤销,比如区间众数。和普通莫队相比较,就是对于每一个块,左端点放在块的右端点处,每次向左扩展,......
  • bitset 优化莫队
    题目传送门:Ynoi跳进兔子洞好题!我们观察题目,发现题目让我们求的可以写成:\[(r_1-l_1+1)+(r_2-l_2+1)+(r_3-l_3+1)-3\timessize\]其中:\(size\)是三段中公共颜色的个数问题转移成求三段公共颜色的个数。考虑使用莫队,然后在转换左右边界的时候使用数组记录每个颜色出现几次,然后......
  • 莫队学习笔记(如何处理增量)
    题目传送门:序列考虑我们已经求出了区间\([l,r]\)的答案,现在要求\([l,r+1]\)的答案。很明显增多的子序列有\((l,r+1),(l+1,r+1)...(r+1,r+1)\)。考虑求出\([l,r+1]\)中的最小值的位置\(p\)(可以用\(rmq~O(1)\)求出),那么\(a_p\)的贡献就是\(a_p\times(p-l+1)\),现在我......
  • [学习笔记] 莫队
    一、普通莫队莫队是一种基于分块的算法,由莫队提出(orz)。莫队可以解决一类查询序列区间信息的题。可以使用该算法的前提是维护的信息必须可以在\(O(1)\)(如果用map/set可以带\(\log\),或者优化成\(O(1)\))内将\([l,r]\)的答案扩展到\([l-1,r],[l+1,r],[l,r-......
  • 莫队-题1
    XORandFavoriteNumber题解我们考虑将问题进行转化对于一个区间\([l,r]\)中有多少个子区间异或值为\(k\)这个问题,我们考虑到异或的前缀性质,对其进行差分即:令\(pre_i\)为\([1,i]\)的前缀异或和,对于\(i,j\in[l,r],i\leqj\),且\(pre_{i-1}\opluspre_j=k\)那么问题......
  • 重拾莫队的一点儿思考
    发现在过去一年里好多东西都忘光了,于是全部重来。对于最简单的一个莫队情景:序列长度为\(n\),有\(q\)次询问,插入、删除复杂度均为\(O(1)\)。我们把询问按照左端点排序,然后分块,每一块内再按照右端点来排序……等一等?考虑一下两种不同的分块方式。第一种,把原序列按\(B\)分块......