收获: 1、分块时顺便记录每个位置所属的块,然后一次排序就OK了。 2、要权衡在“区间移动”与“查询结果”之间的时间,莫队算法一般区间移动频率远大于查询结果,所以我们选择的辅助数据结构时就要注意了,我最开始写的是值域线段树,自己生成的极限数据要1m8s,改成树状数组后要24s,还是过不了,hzw.....
分类:
其他好文 时间:
2015-02-23 14:15:44
阅读次数:
167
莫队,利用可以快速地通过一个问题的答案得到另一问题的答案这一特性,合理地组织问题的求解顺序,将已解决的问题帮助解决当前问题,来优化时间复杂度。典型用法:处理静态(无修改)离线区间查询问题。线段树也是处理区间问题的一个有力工具,它和莫队算法各有特点:线段树可以支持修改,并且单次操作时间复杂度一般为O(...
分类:
其他好文 时间:
2015-02-22 15:45:22
阅读次数:
117
wtf,最近挖坑有点小多啊,没办法>__<下面把这篇小结补上首先众所周知的是莫队算法是要把询问先按左端点属于的块排序,再按右端点排序复杂度就先不证了,有兴趣的同学可以自己YY下或者查阅资料下面举几个例子详细说明1.小Z的袜子
Description:给定一个序列mm个询问每次询问:区间中选两个数,两个数相...
分类:
编程语言 时间:
2015-02-08 21:57:38
阅读次数:
722
同样是插入和寻找第k大,这里因为区间不存在包含的情况,所以可以现将区间排序然后直接搞就行了。如果存在包含的情况那就只能上主席树或者是莫队算法来搞了。#include #include #include #include #include using namespace std;struct Node...
分类:
其他好文 时间:
2015-02-06 12:56:27
阅读次数:
151
题目大意:给定一个长度为n的数组,m次询问某个区间内的mex值
怒写莫队233
将权值分成√n块,记录每个权值的出现次数以及每块内有多少权值出现过
修改O(1)即可完成 查询时首先扫一遍找到第一个块内有没有覆盖的点的块 然后在块内暴力查找 时间复杂度O(√n)
套个莫队 总时间复杂度O(m√n)
#include
#include
#include
#include
#inclu...
分类:
编程语言 时间:
2015-02-02 09:43:04
阅读次数:
211
特意学了一下莫队算法,做了几个题,总结一下。 目前还只是学了线性序列的莫队的分块,没有学什么曼哈顿最小生成树。分开的写法也挺简单粗暴明了(据说曼哈顿距离的最小生成树并不好写)时间复杂度是O(n*sqrt(n))。 做了几个题感觉莫队最主要的还是三个内容 1、离线 2、分块计算 3、由[...
分类:
编程语言 时间:
2015-02-01 19:06:12
阅读次数:
480
唔,想有更加舒爽的阅读体验请移步http://mlz000.logdown.com/posts/252433-mo-algorithm-summary
首先众所周知的是莫队算法是要把询问先按左端点属于的块排序,再按右端点排序
复杂度就先不证了,有兴趣的同学可以自己YY下或者查阅资料
下面举几个例子详细说明
1.小Z的袜子
Descripti...
分类:
编程语言 时间:
2015-01-29 14:39:02
阅读次数:
227
如题。#include#include#includeusing namespace std;#define N 200001#define BN 451int n,m,a[N],b[N],sumv[BN],l[N],num[N],num2[N],Lim,siz[BN],anss[N];struct...
分类:
编程语言 时间:
2015-01-27 18:01:05
阅读次数:
229
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3757题解:颜色种数不太好用树形数据结构维护,因为子节点的信息不能快速合并为父节点的信息。而莫队算法正是解决这类题目的利器。节点与节点间的转移可以戳vfleaking的blog:http://vf...
分类:
移动开发 时间:
2015-01-26 13:24:02
阅读次数:
254
题目链接: BZOJ - 3236 BZOJ - 3809算法一:莫队首先,单纯的莫队算法是很好想的,就是用普通的第一关键字为 l 所在块,第二关键字为 r 的莫队。这样每次端点移动添加或删除一个数字,用树状数组维护所求的信息就是很容易的。由于这里有 logn复杂度,所以复杂度还是挺高的。于是 BZ...
分类:
其他好文 时间:
2015-01-24 19:57:43
阅读次数:
188