
莫队算法
WerKeyTom_FTD
这个作者很懒,什么都没留下…
展开
-
小纪的作业题
题目描述莫队算法他符合莫队算法的特征! 于是用g[x]表示x这类数对答案的贡献,然后用num[x]记录x出现的次数即可。预处理一下每个数的逆元。注意num[x]<=0时g[x]应当为0。参考程序#include<cstdio>#include<cmath>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespac原创 2016-02-16 19:57:01 · 684 阅读 · 0 评论 -
[luoguP3674]小清新人渣的本愿
题目大意询问区间是否存在两个数和为x/差为x/积为x 这两个数可以使同一个数bitset不会bitset的蒟蒻哭了 维护bitset加和减就随便做了。 积就枚举较小数 上个莫队算法来维护我们需要维护的#include<cstdio>#include<algorithm>#include<bitset>#define fo(i,a,b) for(i=a;i<=b;i++)using n原创 2017-03-20 16:52:20 · 954 阅读 · 0 评论 -
[hackerrank]Range Modular Queries
题目大意区间询问模x等于y的值的个数 值域是[0,40000] 允许离线平衡结合对于x<=200的询问,因为x很小所以y也很小,这时候可以考虑使用分块。 将序列分块,然后处理sum[i,j,k]表示前i块中模j等于k的值有多少个。 询问时暴力扫剩余部分。 对于x>200的询问,因为x较大所以符合条件的数很小,这时候可以考虑使用莫队。 维护一个桶,每次询问只要看一下对应符合的数字有多少个即原创 2017-03-20 15:24:21 · 590 阅读 · 0 评论 -
Sequence
题目大意若干个区间询问 每次询问∑ri=l∑rj=lw((ai,aj))\sum_{i=l}^r\sum_{j=l}^rw((ai,aj)) w(x)表示x的不同质因子数。上以根号n为阈值,用两种算法。 小于等于根号n的质数枚举+前缀和 大于根号n的就上莫队 当然直接莫队也能8nn√8n\sqrt n#include<cstdio>#include<algorithm>#define原创 2017-03-18 20:20:01 · 502 阅读 · 0 评论 -
[bzoj3236][AHOI2013]作业
题目大意多次询问[l,r]内权值在[a,b]的数量及种类数。分块数量随便做,我们思考种类数怎么做。 具体见gty的二逼妹子序列题解#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=100000+10,原创 2016-11-10 21:55:50 · 628 阅读 · 0 评论 -
子串
题目大意SA+莫队我们把所有字符串连起来,中间有分割符分开,然后求SA。 那么,一个子串所在第几个单词可以看以其为前缀的后缀包含了几个分隔符。 对于每个询问,我们二分找出在SA上的对应区间。于是,询问可以改成这样:求[l,r]权值在[x,y]的权值种类数。 可以用莫队做,用分块维护就可以消掉log,这是经典套路。#include<cstdio> #include<algorithm>#in原创 2016-09-18 21:46:49 · 642 阅读 · 0 评论 -
Ztxz16学图论
题目大意给定一张图,每次询问编号在[l,r]的边连上后会形成多少联通块。离线做法我们考虑莫队。 考虑左端点所在的每一块,左端点到块末最多根号的距离,右端点是单调的。并查集容易添加,因此只保留块末到右端点的联通情况,每次暴力加上块末到左端点部分。在线做法把加入1~i条边,每条边权值设置为编号,所形成的最大生成树叫第i个版本。 [l,r]的答案=第r个版本中联通块数量+第r个版本中[1,l-1]存在原创 2016-09-04 07:49:03 · 916 阅读 · 0 评论 -
[bzoj3052][WC2013]糖果公园
题目大意给定一颗n个结点的树。每个结点有一种颜色。颜色种类为m。 一条路径的价值定义为 ∑i=1mw[cnt[i]]∗v[i]\sum_{i=1}^mw[cnt[i]]*v[i] 其中cnt[i]表示这条路径上颜色i出现的次数。 现有q个操作,每个操作要么是询问一条路径的价值,要么是将一个结点的颜色种类修改。带修改莫队这是树上莫队,我们接下来只讨论序列莫队,树上莫队可以转化为序列莫队。 带原创 2016-05-09 20:08:23 · 2150 阅读 · 0 评论 -
[bzoj2453]维护队列
题目大意需要兹瓷修改,区间询问不同种类数。带修改莫队裸上呀!#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=10000+10,maxd=1000000+10,c=25;int belong[maxn],a[maxn],b[maxn原创 2016-05-30 19:07:08 · 904 阅读 · 0 评论 -
[bzoj4542][HNOI2016]大数
题目大意给定字符串 每次询问该字符串的一个子串中有多少子串转为数字后是p的倍数。 p<10^10且是质数,每次询问p相同。式子转化如果对[l,r]询问那么答案相当于 ∑ri=l∑rj=i(∑jk=is[k]∗10j−kmodp==0)\sum_{i=l}^r\sum_{j=i}^r(\sum_{k=i}^js[k]*10^{j-k}\mod p==0) ∑ri=l∑rj=i(10j∗∑jk=原创 2016-04-20 20:57:44 · 1019 阅读 · 1 评论 -
[bzoj3809]Gty的二逼妹子序列
题目大意询问序列区间中权值在给定区间内权值种类数。简单的莫队思想我们可以莫队算法,然后用线段树来维护,这个思路十分显然。 这样in和out的复杂度均为log n,而query的复杂度为log n。更高效的算法同样使用莫队,让我们思考我们需要兹瓷的功能。 1、插入一个数(in) 2、删除一个数(out) 3、询问区间权值种类(query) 上面用线段树来兹瓷这三个操作,由于in和out时间复原创 2016-03-28 18:49:34 · 1055 阅读 · 0 评论 -
[bzoj3585]mex
题目大意求区间mex主席树我们建立主席树,对于第r棵线段树每一个位置i存储的是数字i出现的最右端。 那么对于区间询问l~r,就是找到第r棵线段树的最大前缀区间,满足区间内每个数的最右出现位置都不小于l。 这个很容易,我们只需要维护区间最小值,询问时如果左区间的区间最小值小于l说明mex在左区间否则mex在右区间。 于是复杂度降为n log n。#include<cstdio>#include原创 2016-03-24 21:45:54 · 2065 阅读 · 0 评论 -
[bzoj3757]苹果树
题目大意有一颗N个节点的树和M个询问,每个点有一种颜色。每次询问u到v路径上把颜色s和颜色t当作同一种颜色后路径上不同颜色的数目。 n<=5*10^4,m<=10^5树上莫队注意到这题符合莫队算法特征。 于是直接树上莫队即可,用num[x]表示颜色x出现的次数,那么对于把颜色s和t当作同一种颜色只需要看num[s]和num[t]是否都大于0,注意考虑s=t的情况。#include<cstdio>原创 2016-02-16 20:17:02 · 1134 阅读 · 0 评论 -
[bzoj3289]Mato的文件管理
题目大意给定一个序列,每次询问一个区间,你可以交换相邻两个元素,这个区间你最少需要多少次交换才能使其有序。分块大法好我们观察,每次交换如果交换a[i]和a[i+1],那么显然a[i]>a[i+1],交换后逆序对个数减一。当序列逆序对个数为0时序列就有序。那么显然题意就是询问区间逆序对个数。我们可以用莫队算法来做。因为它符合类似+1-1的性质。#include<cstdio>#include<alg原创 2016-03-02 18:40:17 · 842 阅读 · 0 评论 -
莫队算法学习小记
前言我还是太弱了samjia都打出树上莫队了我还没打过序列上的莫队算法。一定是我对GDKOI2014的题目没有钻研导致我很长一段时间都没有接触莫队算法。 莫队算法可以使用,通常符合以下特点:1、允许离线。2、进行区间询问,并且我们已知区间l~r的答案,可以得到l-1~r或l+1~r或l~r-1或l~r+1这四个区间的答案。3、没有修改操作。序列上的莫队算法莫队算法改变了询问的顺序。 我们对原序列原创 2016-02-16 19:53:47 · 821 阅读 · 0 评论 -
[CodeM初赛A轮]E
题解大小点分治。 出现次数大于阈值的,处理前缀和,然后暴力枚举一个询问判断。 出现次数小于阈值的,跑莫队,维护每个数出现次数,以及每种出现次数的数的个数,然后询问可以暴力枚举出现次数。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int max原创 2017-06-18 22:20:41 · 730 阅读 · 2 评论