链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5301 题面; 5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 476  Solved: 358[Submit][Status][Discuss] Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子…
5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 155[Submit][Status][Discuss] Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子 序列满足异或和等于 k . 也就是说,对于所有的 x,y (l≤x≤y≤r),能够满足a[x]^a[x+1]^…^a[y]…
Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子 序列满足异或和等于 k . 也就是说,对于所有的 x,y (l≤x≤y≤r),能够满足a[x]^a[x+1]^…^a[y]=k的x,y有多少组. Input 输入文件第一行,为3个整数n,m,k. 第二行为空格分开的n个整数,即ai,a2,….an. 接下来m行,每行两个整数lj,rj,表示一次查询. 1≤n,m≤105,O≤k,ai≤105…
题意 题目链接 Sol 一开始以为K每次都是给出的想了半天不会做. 然而发现读错题了维护个前缀异或和然后直接莫队搞就行,. #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second //#define int long long #define LL long long #define Fin(x) {…
蛤?这一年cqoi的题这么水???? 这不就是个sb莫队吗 这样写怕是会被打死,,, 注意\(a_x\ XOR a_{x+1}\ XOR\ ...\ a_{y}=s_{x-1}\ XOR\ s_y\),所以问题转化为两个数异或值为k的方案数 所以记录一下当前区间的值域和当前区间的答案就星了.. // It is made by XZZ #include<cstdio> #include<algorithm> #include<cmath> #define il inli…
题目链接 Solution 有点巧的莫队. 考虑到区间 \([L,R]\) 的异或和也即 \(sum[L-1]~\bigoplus~sum[R]\) ,此处\(sum\)即为异或前缀和. 然后如何考虑异或和为 \(k\) ? 我们做完前缀和后,可以发现对于\(sum[i]\)这个起点,异或上\(k\bigoplus{sum[i]}\)则可以异或成\(k\). 且由于 \(k\leq{100000}\) ,所以可以开一个数组记录每一个异或值的出现次数. 然后就可以 \(O(1)\) 修改了,套个莫…
题意:给定数列 \(a\) 和 \(k\) ,询问区间 \([l,r]\) 中有多少子区间满足异或和为 \(k\). 莫队.我们可以记录前缀异或值 \(a_i\),修改时,贡献为 \(c[a_i\bigoplus k]\) . #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #define R register in…
莫队板子 用于复习 #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> #include <cstring> #include <map> #define Sqr(x) ((x)*(x)) using namespace std; const int N = 1e5 + 5; struct Q{ int x, y, id; }q[N];…
题目描述 已知一个长度为n的整数数列a1,a2,...,an,给定查询参数l.r,问在al,al+1,...,ar​区间内,有多少子序列满足异或和等于k.也就是说,对于所有的x,y (I ≤ x ≤ y ≤ r),能够满足ax⨁ax+1⨁...⨁ay=ka_x \bigoplus a_{x+1} \bigoplus ... \bigoplus a_y = kax​⨁ax+1​⨁...⨁ay​=k的x,y有多少组. 输入格式 输入文件第一行,为3个整数n,m,k. 第二行为空格分开的n个整数,即a…
Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们规定妹子们的美丽度全都在[1,n]中. 给定一个长度为n(1<=n<=100000)的正整数序列s(1<=si<=n),对于m(1<=m<=1000000)次询问“l,r,a,b”,每次输出sl...sr中,权值∈[a,b]的权值的种类数. Input 第一行包括两个整数n…
作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬.你的任务便是告诉小Z,他有多大的概率抽到两只颜色相同的袜子.当然,小Z希望这个概率尽量高,所以他可能会询问多个(L,R)以方便自己选择. Input 输入文…
题意 给你一个长度序列,有多组询问,每次询问(l,r)任选两个数相同的概率.n <= 50000,数小于等于n. 莫队算法裸题. 莫队算法:将序列分为根号n段,将询问排序,以L所在的块为第一关键字,R为第二关键字排序,以次处理询问O(n^1.5) 由于是按L所在的块为第一关键字.R为第二关键字排序的,所以在每块内L的变化最多为n,总O(n^1.5):R在每块内递增,每块内变化最多为n,总O(n^1.5),故O(n^1.5). 具体可以抽象为二维的点来理解. 概率p = sigma(c[i]*(c…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3289 [题意] 回答若干个询问:[l,r]区间内的逆序对个数. [思路] 莫队算法,BIT维护插入删除. 使用BIT维护当前指针l,r内的所有的数.考虑转移部分: l<q[i].l 删出区间中比a[l]小的数与之构成的逆序对,Q(a[l]-1) l>q[i].l l++,添加区间中比a[l]小的数与之构成的逆序对,Q(a[l]-1) r>q[i].r 删除区间中比a[r]大的…
小Z的袜子 [题目链接]小Z的袜子 [题目类型]莫队算法 &题解: 莫队算法第一题吧,建议先看这个理解算法,之后在参考这个就可以写出简洁的代码 我的比第2个少了一次sort,他的跑了1600ms,我的跑了800ms. [时间复杂度]\(O(n^{1.5})\) &代码: #include <cstdio> #include <bitset> #include <iostream> #include <set> #include <cma…
题目描述 已知一个长度为n的整数数列 $a_1,a_2,...,a_n$​,给定查询参数l.r,问在 $a_l,a_{l+1},...,a_r$​ 区间内,有多少子序列满足异或和等于k.也就是说,对于所有的x,y (I ≤ x ≤ y ≤ r),能够满足$a_x\bigoplus a_{x+1} \bigoplus ... \bigoplus a_y = k$的x,y有多少组. 思路 记一个异或前缀和 val,问题就转换成有多少对数异或等于 k 直接上莫队 代码 #include <bits/s…
题目传送门 传送点I 传送点II 题目大意 给定一个长度为$n$的序列.询问区间$[l, r]$的所有不同的子序列的最小值的和. 这里的子序列是连续的.两个子序列不同当且仅当它们的左端点或右端点不同. 不会直接上神奇数据结构的做法. 考虑莫队.当在一段右边加入一个数后,考虑它产生的贡献. 首先找到加入后这一段的最小值,那么左端点在它的左侧的时候这个最小值做出贡献. 对于它右边到新加入的数新造成的贡献用同样的方法计算,期望下多带个$log$,然后题目没说数据随机. 考虑右边这一部分其实被算重了许多…
题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务便是告诉小Z,他有多大的概率抽到两只颜色相同的袜子.当然,小Z希望这个概…
Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar.若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列.现在有q个询问,每个询问给定两个数l和r,1≤l≤r≤n,求a[l:r]的不同子序列的最小值之和.例如,给定序列5,2,4,1,3,询问给定的两个数为1和3,那么a[1:3]有6个子序列a[1:1],a[2:2],a[3:3],a[1:2],a[2:3],a[1:3…
[BZOJ4540][Hnoi2016]序列 Description 给定长度为n的序列:a1,a2,…,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar.若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列.现在有q个询问,每个询问给定两个数l和r,1≤l≤r≤n,求a[l:r]的不同子序列的最小值之和.例如,给定序列5,2,4,1,3,询问给定的两个数为1和3,那么a[1:3]有6个子序列a[1:1],a[2:2],a[3…
Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三行开始,每行一个询问l,r. Output 一行一个数,表示每个询问的答案. Sample Input 5 5 2 1 0 2 1 3 3 2 3 2 4 1 2 3 5 Sample Output 1 2 3 0 3 HINT 数据规模和约定 对于100%的数据: 1<=n,m<=200000 0<=ai&l…
http://www.lydsy.com/JudgeOnline/problem.php?id=3781 N个数的序列,每次询问区间中每种数字出现次数的平方和,可以离线. 丢模板: #include <bits/stdc++.h> using namespace std; const int MAXN=50005, S=225; int be[MAXN], A[MAXN], c[MAXN], ans[MAXN], N, M, K; struct Qry{ int l, r, id; bool…
5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 400  Solved: 291[Submit][Status][Discuss] Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子 序列满足异或和等于 k . 也就是说,对于所有的 x,y (l≤x≤y≤r),能够满足a[x]^a[x+1]^…^a[y]…
题目链接  BZOJ4540 考虑莫队算法. 这题难在$[l, r]$到$[l, r+1]$的转移. 根据莫队算法的原理,这个时候答案应该加上 $cal(l, r+1) + cal(l+1, r+1) + cal(l+2, r+1) + ... + cal(r+1, r+1)$ $cal(l, r)$表示$a[l], a[l+1], a[l+2], ..., a[r]$中的最小值. 我们先求出$[l, r +1]$ 这些数中的最小值$a[x]$ 那么$cal(l, r+1) + cal(l+1,…
[题意] 回答若干个询问,(l,r,a,b):区间[l,r]内权值在[a,b]的数有多少[种]. [思路] 考虑使用块状链表实现莫队算法中的插入与删除. 因为权值处于1..n之间,所以我们可以建一个基于权值的块状链表,每个块维护一个区间信息sum,表示权值在该块的数的种数. 这样插入与删除只需要O(1)的时间,查询需要O(sqrt(n))的时间,总的时间复杂度为O(n^1.5+qn^0.5) [代码] #include<set> #include<cmath> #include&l…
「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连续子序列的异或和等于 \(k\).数据范围均在 \([0,1e5]\). 本题不强制在线,故莫队. 记序列 \(a\) 的前缀异或和 \(pre\),用一个桶 \(t_i\) 记录当前查询区间内前缀异或和为 \(i\) 的数量. 代码如下: #include <cstdio> #include &…
[HNOI2016]序列(莫队,RMQ) 洛谷  bzoj 一眼看不出来怎么用数据结构维护 然后还没修改 所以考虑莫队 以$(l,r-1) -> (l,r)$为例 对答案的贡献是$\Sigma_{i=l}^{r}minval(a[i:r])$ 考虑维护前缀和 先用单调栈扫出$w[i]$作为最小值的左边界右边界$l_i,r_i$ 然后回到上面的例子贡献就是$frontsum_{r}-frontsum_{rmqmin(l,r)}+w[rmqmin(l,r)]*(rmqmin(l,r)-l+1)$ 完…
http://www.lydsy.com/JudgeOnline/problem.php?id=2038 学了下莫队,挺神的orzzzz 首先推公式的话很简单吧... 看的题解是从http://foreseeable97.logdown.com/posts/158522-233333来的 对于查询$[l,r]$ $$ans=\frac{\sum \dbinom{x_i}{2}}{\dbinom{r-l+1}{2}}$$ 其中$x_i$表示当前区间颜色为i的出现次数 这个还用解释么.... 然后我…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2038 [题意] 给定一个有颜色的序列,回答若干个询问:区间内任选两个颜色相同的概率. [思路] 设一个颜色在区间内的出现次数为cnt,则抽到这种颜色的概率为: (cnt-1)*cnt/2 = 1+2+…+cnt-1 对于一个区间我们就可以使用一个cnt数组通过扫一遍得出答案.暴力的话,可以拿两个指针,每次移动指针,对数据进行插入与删除. 莫队算法就是在此基础上有序化了数据.将序列每s…
题目传送门 需要高级权限的传送门 题目大意 给定一个全排列,询问一个区间内的值域连续的一段的长度的最大值. 考虑使用莫队算法. 每次插入一个数$x$,对值域的影响可以分成4种情况: $x - 1$, $x + 1$都不存在. 只有$x - 1$存在,等价于在一段后面添加一个数 只有$x + 1$存在,等价于在一段前面添加一个数 $x - 1$和$x + 1$都存在,等价于把两段拼起来 所以只有端点处的信息有用.我们考虑维护端点处的信息. 为了方便区分存在和不存在,我们维护开区间. 每个端点的$p…
[题意]给定n个节点的树,每个节点有一个数字ai,m次操作:修改一个节点的数字,或询问一条树链的数字集合的mex值.n,m<=5*10^4,0<=ai<=10^9. [算法]树分块+带修改莫队算法 [题解]和[BZOJ]3052: [wc2013]糖果公园 树分块+待修改莫队算法差不多. 区别在于如何处理树链信息.考虑对值域分块,由于>n的数字没用,所以对[0,n]分块,维护每一块所含数字个数. 这样就可以O(1)单点修改,O(√n)查询.(扫描到第一块所含数字不满的块,再块内扫描…