
莫队算法
lajiyuan_
已经退役啦,会不定期更新cf博客 or 其他计算机知识相关的博客.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
莫队算法模板以及简单的入门题总结
莫队模板struct node{ int l,r,id;}Q[maxn];int pos[maxn];bool cmp(const node &a,const node &b){ if(pos[a.l]==pos[b.l]) return a.r<b.r; return pos[a.l]原创 2018-08-29 17:54:03 · 2059 阅读 · 3 评论 -
【Codeforces Round #340 (Div. 2), problem: (E) XOR and Favorite Number】 莫队算法
http://codeforces.com/contest/617/problem/E 题意就是给出n个数的序列和数字k,q次询问,每次询问给出[L,R],求这个区间内有多少个连续区间的异或和等于k。 由于我们知道 A[i]XorA[i+1]Xor....XorA[j]A[i]XorA[i+1]Xor....XorA[j]A[i]XorA[i+1]Xor....XorA[j]=(A[1]Xo...原创 2018-08-29 21:14:36 · 165 阅读 · 0 评论 -
【BZOJ 2038 [2009国家集训队]小Z的袜子(hose)】 莫队算法
BZOJ 2038 题意就是给你一个n个数字的数字序列,Q次查询操作给一个[L,R],求从这个区间任取两个数而且这两个数相等的概率 我们可以统计这个区间每种数的个数sum[x],数字x对答案的贡献为x*(x-1),最后除以整个区间的方案数len*(len-1)就可以了,所以add函数的时候,一个新的x对答案的贡献就是加入x之前的sum[x],del函数的时候,减少的应该是删除x之后的sum[x...原创 2018-08-29 21:17:42 · 163 阅读 · 0 评论 -
【SPOJ DQUERY - D-query】 莫队算法
https://www.spoj.com/problems/DQUERY/en/ 题意就是区间不同数的个数,模板题 代码#include<stdio.h>#include<math.h>#include<iostream>#include<algorithm&g原创 2018-08-29 21:19:58 · 178 阅读 · 0 评论 -
【Yandex.Algorithm 2011 Round 2, problem: (D) Powerful array】 莫队算法
http://codeforces.com/problemset/problem/86/D 题意就是每种数字x对答案的贡献是(x*x*出现次数),所以add函数和del函数就很明显了。 但是由于读入比较多,需要挂个简单的读入挂 代码#include<stdio.h>#include<math.h>#include<iostream&原创 2018-08-29 21:21:29 · 171 阅读 · 0 评论 -
【HDU 5213 Lucky】 莫队算法
HDU5213 给你一个n个数的序列a,给你q个询问,每次询问给两个不相交的区间,求a[i]+a[j]=k的方案数 i属于第一个区间,j属于第二个区间。 对于这种两个区间内查询得问题,我们要看看能不能转化为一个区间之内的查询操作。 我们设f(l,r)f(l,r)f(l,r)为[l,r][l,r][l,r]区间内选i,j,a[i]+a[j]=ka[i]+a[j]=ka[i]+a[j]=k的方...原创 2018-08-29 21:23:01 · 247 阅读 · 0 评论 -
【FZU 2226 信心题】莫队算法
Problem 2226 信心题 给定一个含有n个数字的数列,每个数字都有一个值a[i](下标从1开始)。定义第i个数字和第j个数字间的距离dis(i,j)=abs(i-j)。 数据范围: N<=10^5 Q<=10^4 1<=a[i]<=10^3 1<=l<=r<=n 注意到a[i]小于1000,所以我们如果我们可以得到每种a[i]最左出现原创 2018-08-29 21:25:16 · 231 阅读 · 0 评论 -
【HDU 4638 Group】 莫队算法
HDU4638 题意就是给你一个长度为n的序列,每次查询给一个区间,问区间可被分成多少个连续的段 例如 1,2,4,5被分为 [1,2],[4,5]两段。 我们可以考虑添加一个数对答案的影响,添加一个数的时候,如果他左右的数字都存在,显然段数-1 若左右存在某一个,段数不变 若左右均不存在,则段数+1 删除一个数的时候类似,自己推导一下就可以了。 代码#include<st...原创 2018-08-29 21:27:06 · 226 阅读 · 0 评论 -
【HDU 4676 Sum Of Gcd】莫队算法
HDU4676 题意就是求某个区间内两两gcd之和。 关于一个区间内两两GCD之和,我们有一个推导: 对一个序列的某个区间L,R,每个数两两之间的GCD之和为Σd|nφ(d)×C2num(d)Σd|nφ(d)×Cnum(d)2\varSigma _{d|n}\varphi \left( d \right) \times C_{num\left( d \right)}^{2} d在这里指...原创 2018-08-29 21:27:51 · 420 阅读 · 0 评论