
莫队算法
huanzhizun
这个作者很懒,什么都没留下…
展开
-
莫队算法
莫队算法指的是:对于要询问的区间,把1~n分成sqrt(n)块,把每个区间的左端点按其所在的块编号排序,而右端点按大小排序,这样总复杂度是sqrt(n)的原创 2015-07-08 19:57:56 · 587 阅读 · 0 评论 -
hdu3113 Lucky 莫队算法
定义记号f(A,B)表示询问区间A,B时的答案用记号+表示集合的并利用莫队算法我们可以计算出任意f(A,A)的值不妨假设A=[l1,r1],B=[l2,r2],C=[r1+1,l2−1]容易知道f(A,B)=f(A+B+C,A+B+C)+f(C,C)−f(A+C,A+C)−f(C+B,C+B)因此一个询问被拆成四个可以用莫队算法做的询问直接把上述四个询问拆开即可。#include原创 2015-07-08 19:59:03 · 391 阅读 · 0 评论 -
bzoj 2038 [2009国家集训队]小Z的袜子 莫队算法
莫队算法的经典题,在一个区间内,维护一定颜色的袜子的数量即可,复杂度:O(nsqrt(n));#include#include#include#include#includeusing namespace std;const int maxn=50005;int bit[maxn];int a[maxn],b[maxn];typedef long long LL;LL s1原创 2015-07-08 20:02:07 · 389 阅读 · 0 评论 -
bzoj3289 Mato的文件管理 莫队算法
我们可以想到交换的次数就是逆序数,所以我们用莫对算法维护区间,维护则用树状数组来维护,所以总复杂度是O(nsqrt(n)log(n));#include#include#include#include#includeusing namespace std;const int maxn=50005;int bit[maxn];int a[maxn],b[maxn];ty原创 2015-07-08 20:04:36 · 458 阅读 · 0 评论 -
codeforce 86D Powerful array 莫对算法
简单莫队算法题,对于她给的公式来说怎么,每一次转移区间的是候用一个数组来位数每个数值的数的个数即可。#include#include#include#include#includeusing namespace std;const int maxn=200005;typedef long long LL;int a[1000006],b[maxn];struct pi{原创 2015-07-08 20:08:12 · 479 阅读 · 0 评论 -
hdu 5799 This world need more Zhu(2016多校第六场1007)莫队
裸莫队,对于路劲上的查询直接树上莫队,没学过的人可以去写写bzoj的苹果树,子树查询用dfs序后用莫队处理。#include#include#include#include#include#include#include#define maxn 100005using namespace std;typedef long long LL;int deap[maxn],vis原创 2016-08-05 22:07:26 · 684 阅读 · 0 评论