莫队算法
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
[bzoj2453]【NOI2011模拟7.23】维护队列
Description给出n个数,和m次操作。每次操作分为 R x y :将第x个数变成y。 Q x y :询问在x到y这个区间里,有多少种数。 n,m<=10000Solution壮哉我大莫队算法%%% 很明显可以用带修改莫队碾过去(话说这道题正解好像是奇怪的树套树) 练了练手(第一次打,多多包涵) 带修改莫队就是把排序变成三元的,第一关键字是左端点所在的块,第二关键字是右端点所在的块原创 2016-05-30 19:14:12 · 580 阅读 · 0 评论 -
[bzoj2743][HEOI2012]采花
Description给出一个长度为n的序列,序列中的数再[1~c]的范围内,和m次询问,每次询问[l,r]这个区间中有多少个出现大于等于两次的数。 n,m,c<=10^6Solution看到这种题,有没有强制在线,自然很容易想到莫队~(≧▽≦)/~啦啦啦 可是n<=10^6,根号n的莫队表示很方。( ⊙ o ⊙ )啊! 于是,我们可以想到一个优美的替代品。 预处理出next[i]表示i后面原创 2016-06-02 19:26:31 · 862 阅读 · 0 评论 -
莫队算法学习小记
先前还以为莫队算法是一个高级的东西。 可是仔细学习了一下,才发现这东西应该叫做——一个优雅的暴力对于一个询问区间[l,r],如果我们可以O(1)的得到区间[l,r-1],[l,r+1],[l-1,r],[l+1,r]的答案,那么从这个询问转移到另一个询问的时间复杂度为O(|l-l’|+|r-r’|)。 那我们可以确定一个解决询问的顺序,从而使复杂度达到O(n^1.5) 我们把每个询问看做二位平原创 2016-04-28 20:49:52 · 1673 阅读 · 0 评论 -
【雅礼联考GDOI2017模拟9.2】Ztxz16学图论
Description给出一张n个点m条边的无向图,q次询问每次询问只有编号为l到r之间的边可以使原图有多少个联通块。 n,m,q<=200000Solution这种东西很显然用并查集离线啦。 然而怎么删除是个问题。 Orz Drin_E神奇莫队梦想过。 我们这样想,维护一个数组,某一位为1表示这一条边在并查集里,0表示不在。加边的顺序是从左到右。 枚举左端点,构出这个数组,然后就可以用树原创 2016-09-03 16:36:53 · 923 阅读 · 0 评论 -
[51nod1203]JZPLCM
Description给出n个数ai,m次询问,每次询问区间[l,r]的LCM。 答案对10^9+7取模。 n,m,ai<=50000Solution再次被推毒。 这道题做法挺多的说~ 似乎许多dalao都是直接上莫队踩过去的~ 栋爷的平衡规划 听说这道题是集训队原题,然后原题ai<=10^9?首先我们考虑LCM是什么?就是所有质数在这个区间中出现的次数最大值的乘积。 发现找最大值很不原创 2017-01-06 20:24:51 · 602 阅读 · 0 评论 -
【NOI2017模拟3.25】历史行程
Description给出一个长度为n的字符串,m次询问前缀l~r中两两的最长后缀最长是多少。 n,m<=1e5Solution显然先倒过来,询问变成求后缀的lcp SA处理一下就好了。 但是rank不是有序的,无法处理,怎么办呢? 可以离线莫队,维护一个set,每次插入或删除都可以log n解决。 但是复杂度过高会T怎么办呢? 我们每次插入就是要求某个点的前继和后继。 这个东西可以用原创 2017-03-29 20:55:32 · 528 阅读 · 0 评论 -
【GDOI2018模拟8.12】区间第k小
Description给出一个长度为n的序列a,q次询问某个区间[l,r]中的区间第k小,注意如果一个数的出现次数大于w就把它当成n 询问强制在线 n,q,ai<=10^5SolutionOrz 数据结构 根号算法讲师 首先如果询问可以离线怎么做? 一个显然的思路就是莫队+数据结构直接做,但是这样是O(nn√logn)O(n\sqrt n \log n)的 实测数据无梯度一个点都跑不过Qw原创 2017-08-21 12:17:57 · 867 阅读 · 0 评论