简介莫涛大神创造出的离线询问算法的带修改版。
算法基础:需要掌握莫队算法,会打暴搜(暴力)。
一个叫莫的双端队列。
只支持单点修改操作方法普通的不带修改的莫队算法要把每个询问带上两个关键字排序,现在待修改的莫队算法要带上三个关键字排序。初始操作fo(i,1,m) {
scanf("%s%d%d",s,&k,&l);
if (s[0]=='Q')a[++tot]....
分类:
编程语言 时间:
2016-07-10 09:54:47
阅读次数:
196
强行上莫队+线段树显然是会T的。 如果莫队没有删除的转移的话...就可以用并查集代替线段树。 所以按照一般姿势将询问排序好后,右端点照常,左端点每次从左端点所属块的末端开始跑,跑完后暴力撤回。 复杂度还是O(m*n^0.5) 为了能够撤回,并查集合并的时候,以临时增加的点为父亲。 1 #includ ...
分类:
其他好文 时间:
2016-07-05 20:37:46
阅读次数:
402
莫队+分块。。分块修改O(1),查询O(n^0.5) 总复杂度O(n^1.5) 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 #define ...
分类:
其他好文 时间:
2016-06-18 18:31:37
阅读次数:
244
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题目大意:自己看看,懒得写 题解:带修改的树上莫队,经典爆评测机的题 代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cs ...
分类:
其他好文 时间:
2016-06-11 09:19:52
阅读次数:
280
莫队算法:莫队算法使用范围: 1.支持离线操作。 2.在已有的序列左右加入或删除一个节点的复杂度很低。 3.外层复杂度为nsqrt(n)。 我们将序列分为sqrt(n)块,每一块的大小也是sqrt(n),我们将询问按照左端点所在块为第一关键字,当左端点所在块一样是,如果编号是奇数块就按照右端点从升序 ...
分类:
编程语言 时间:
2016-06-10 17:34:11
阅读次数:
195
看到题目就可以想到hash 然后很自然的联想到可持久化权值线段树 WA:base取了偶数 这道题还可以用莫队做,比线段树快一些 可持久化线段树: 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define uint unsigned int ...
分类:
其他好文 时间:
2016-06-08 00:09:02
阅读次数:
286
题意:给n个数,m个询问。每个询问是一个区间,求区间内差的绝对值为1的数对数。 题解:先离散化,然后莫队算法。莫队是离线算法,先按按询问左端点排序,在按右端点排序。 ps:第一次写莫队,表示挺简单的,不过这题之前乱搞一气一直TLE,莫队还是很强大的。 代码: ...
分类:
编程语言 时间:
2016-06-06 00:55:16
阅读次数:
152
莫队算法+树状数组+离散化。 一定要注意莫队转移时增加或减少的逆序对数,比较容易写挂。 离散化那部分虽然效率很低,但是很好写,正确性也很容易保证,虽然会拖慢程序运行速度,但编码的复杂度却大大降低了。 我觉得是一种不错的选择。//反正是抄的黄学长的。。 #include #include #inclu... ...
分类:
其他好文 时间:
2016-06-01 21:13:23
阅读次数:
136