基础莫队入门 首先来看这样的一个经典问题:求区间内有多少个不同的数 首先一个朴素的暴力就是每次移动左右端点然后更新答案,但这样显然可以被卡到 $O(n ^ 2)$,那么有什么办法优化这个复杂度呢?这个时候莫队算法就横空出世了! 首先我们考虑把询问离线,我们想办法把上面的询问排序然后让暴力的复杂度变优 ...
分类:
其他好文 时间:
2020-07-02 13:43:57
阅读次数:
46
莫队算法~练习一 gym卡了莫队,于是趁这个机会学一下莫队 莫队的核心是分块排序,这种特殊的排序方法将任务按排序后的顺序完成,可以在解决绝大多数无修改的离线区间问题中极大的优化时间(优化了$\sqrt n$左右)。 Sona NBUT - 1457 题意:n个数,寻问10000次,任意区间内的相等数 ...
分类:
编程语言 时间:
2020-06-26 14:25:50
阅读次数:
58
莫队算法链接:传送门 题意: 有n个数,m个区间。问区间内有多少个x,x满足x的个数等于x的值的个数(如果x是3,区间内要存在3个3)。 题解: 因为a[i]太大,所以要离散化一下,但是不能用map容器,因为map容器多一个log 莫队就是离线问题+区间的移动。复杂度是O((N+M)*√N) 莫队代 ...
分类:
编程语言 时间:
2020-05-01 10:50:49
阅读次数:
71
莫队算法分那么几类: 普通序列 带修改 树上 回滚 支持在线 其实上述的类型还可以组合起来(~~非常的毒瘤~~)。 个人理解莫队算法的精髓在于如何利用暴力将答案再合理的时间和空间内跑出来。说白了: $$莫队算法=一种很牛逼的自定义排序+分块处理+暴力$$ 首先要理解自定义排序,这个排序之后整个序列可 ...
分类:
编程语言 时间:
2020-03-26 19:35:44
阅读次数:
73
本题是经典的莫队算法 莫队算法是离线查询的一种复杂度优秀的暴力算法。 首先我们需要注意异或的几个性质,相同数字异或等于0,所以我们考虑前缀和,因为从ai-aj的异或值就等于pre[i-1]^pre[j] 前缀和的异或,因为相同部分会抵消。 莫队一般和分块相结合,我们需要维护一个cnt数组,cnt[a ...
分类:
编程语言 时间:
2020-01-29 20:05:30
阅读次数:
87
<学习计划> 一、重点学习新算法 1.平衡树splay,动态树LCT 2.(任意模数)NTT 3.莫队算法 4.带修主席树(树状数组套主席树),线段树/树状数组套平衡树 5.后缀数组/后缀自动机 二、刷题,复习、巩固在OJ上打星号的题目 <注意事项> 1.考试时无论题目有多难,都要努力想正解,不要理 ...
分类:
其他好文 时间:
2020-01-21 00:32:52
阅读次数:
92
数据不是很大,我们可以通过莫队算法来很轻易的解决这个问题。注意不要搞混n,m变量。 按照一定顺序来进行操作询问,使得重复操作尽可能的少。我们考虑从一个已经得出的[l,r]的答案,转移到[a,b]的答案就是两个点的曼哈顿距离。可以使用最小曼哈顿距离生成树来解决。但是代码量过大。我们有更简单的解决策略。 ...
分类:
其他好文 时间:
2020-01-20 09:17:12
阅读次数:
71
~~迟到的莫队知识总结~~ 最近学习了一种说优雅也挺优雅,说暴力也挺暴力的算法:莫队算法 普通莫队 "例题" 给出一个长度为$n$的数列,$a_1,a_2,...,a_n$,有$q$个询问,每个询问给出数对$(i,j)$,需要你给出$a_i,a_{i+1},...,a_j$这一段中有多少不同的数字 ...
分类:
其他好文 时间:
2020-01-17 13:56:46
阅读次数:
82
莫队算法小结(待更新) [toc] 简单介绍 博客安利: 1. "OI Wiki" 2. "大米饼" 解决一类离线区间查询问题,分块思想,时间复杂度$O(n\sqrt n)$ 排序 读入的时候对整个数组进行分块,块大小一般使用$\sqrt n$,对询问操作排序的时候,先以块号为第一关键字,$r$为第 ...
分类:
编程语言 时间:
2019-10-19 12:51:49
阅读次数:
97
分块算法总结 分块,就是一种暴力算法,不过复杂度优于暴力,是基于足够的预处理和合理可行的维护操作进行优化时间, 在预处理+维护的耗时上与暴力处理的耗时上找到一种平衡,于是出了这个优美的算法 标志:查询某一区间内元素种类数,查询某一区间大于等于某一元素的数的个数(即排名 模板:LuoguP2801 教 ...
分类:
编程语言 时间:
2019-10-09 19:19:06
阅读次数:
118