神奇的莫队算法,用来解决可离线无修改的区间查询问题: 首先对原序列进行分块,√n块每块√n个; 然后对所有查询的区间[l,r]进行排序,首先按l所在的块序号升序排序,如果一样就按r升序排序; 最后就按顺序一个一个求出各个查询的结果:知道[l,r]的答案,并且在此基础上能在比较快地在O(x)得到相邻区
分类:
编程语言 时间:
2016-02-29 12:16:02
阅读次数:
216
题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并
分类:
编程语言 时间:
2016-02-27 21:58:17
阅读次数:
186
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 莫队算法可以解决一类不修改、离线查询问题。而这题可以用莫队来做。 *我是看这个论文学会的:(链接~) 其实莫队就是一种优化的暴力,只是把查询都离线预先按照规则去排序,然后依次暴力处理这
分类:
其他好文 时间:
2016-02-23 06:06:16
阅读次数:
172
题目链接很裸的莫队, 就不多说了... 1 #include 2 using namespace std; 3 #define pb(x) push_back(x) 4 #define ll long long 5 #define mk(x, y) make_pair(x, y) 6 #define...
分类:
编程语言 时间:
2015-12-24 00:14:19
阅读次数:
345
problem_id=1551">题目链接题目大意:给出的询问,求出这个区间的里 差小于等于 2 的数字的对数。思路分析:莫队算法。然后分析一下。假设添加了一个数字。那么就要加它旁边相差为2 的数字的和。反之降低一个。就要降低相差为2 的数字的和。再减去自己这个1.。#include #includ...
分类:
编程语言 时间:
2015-12-20 09:17:20
阅读次数:
292
就是莫队的模板题/*Memory: 0 KB Time: 1663 MSLanguage: C++11 4.8.2 Result: Accepted*/#include#include#include#include#include#includeusing namesp...
分类:
编程语言 时间:
2015-12-19 20:22:43
阅读次数:
192
由于10^9很大,所以先离散化一下,把给你的这一段数哈希 时间复杂度O(nlogn)然后就是分块莫队 已知[L,R],由于事先的离散化,可以在O(1)的的时间更新[l+1,r],[l,r+1],[l-1,r],[l,r-1]时间复杂度O(n*sqrt(n));代码如下,速度并不是很快(我比较喜欢手动...
分类:
编程语言 时间:
2015-12-15 00:43:41
阅读次数:
224
要使用莫队算法前提 ,已知[l,r]的答案,要能在logn或者O(1)的时间得到[l+1,r],[l-1,r],[l,r-1],[l,r+1],适用于一类不修改的查询优美的替代品——分块将n个数分成sqrt(n)块按区间排序,以左端点所在块内为第一关键字,右端点为第二关键字,进行排序也就是以( po...
分类:
编程语言 时间:
2015-12-10 12:56:15
阅读次数:
234
题意:
给出一个长度为n的自然数序列,m次查询某一区间[l,r]中数集的mex函数值;
n,m
题解:
mex这个东西似乎并不能直接用某些数据结构维护;
首先实际上a[i]太大是没有用的,因为如果在首页数字中隔开了一段,那么比那个数大的数不可能对答案有影响;
这样我们就相当于将所有数离散到了200000的级别;
然后利用莫队算法维护当前区间数的集合, 那之后就是查询第一个未覆...
分类:
其他好文 时间:
2015-10-23 12:04:39
阅读次数:
211
莫队算法。先分块,然后去统计。莫队算法可以解决一类不修改、离线查询问题。构造曼哈顿最小生成树的做法还没有写。写了个直接分段解决的办法。把1~n分成sqrt(n)段。unit = sqrt(n)m个查询先按照第几个块排序,再按照 R排序。然后直接求解。#include#define N 50010#d...
分类:
其他好文 时间:
2015-10-09 13:55:16
阅读次数:
239