https://vjudge.net/problem/CodeForces-617E
题目大意:给nnn个数,mmm个询问,以及一个数kkk,每次询问要输出[l,r][l,r][l,r]内满足a[i]xor…xora[j]=ka[i]\ xor…xor\ a[j]=ka[i] xor…xor a[j]=k的整数对(i,j)(i,j)(i,j)的数量。

思路:记录异或和,如果sum[i]xorsum[j]=ksum[i]\ xor\ sum[j]=ksum[i] xor sum[j]=k的话,就相当于有一对满足题意的整数对(i+1,j)(i+1,j)(i+1,j)。也就是说对于询问的(l,r)(l,r)(l,r),其实区间[l−1,r][l-1,r][l−1,r]都是可以的,所有我们对询问的lll自减111。用num[i]num[i]num[i]记录异或和等于iii的个数,那么这个值对答案的贡献就是num[ixork]num[i\ xor\ k]num[i xor k]。那么每个点的贡献可以O(1)O(1)O(1)修改,就不难想到莫队辣。

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;const int maxn=1e5+5;int n,m,k;
int a[maxn],sum[maxn],num[maxn*20],pos[maxn];
ll ans;
ll res[maxn];struct node
{int l,r,idx;bool operator<(const node &a)const{if(pos[l]==pos[a.l])return r<a.r;return pos[l]<pos[a.l];}
}b[maxn];inline void add(int val)
{ans+=num[val^k];++num[val]; //考虑到k=0的情况
}inline void sub(int val)
{--num[val];ans-=num[val^k];
}int main()
{scanf("%d%d%d",&n,&m,&k);int dis=sqrt(n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]^a[i];pos[i]=(i-1)/dis+1;}for(int i=0;i<m;i++){scanf("%d%d",&b[i].l,&b[i].r);b[i].idx=i;--b[i].l;}sort(b,b+m);int l=0,r=0;num[0]=1;for(int i=0;i<m;i++){while(l<b[i].l)sub(sum[l++]);while(l>b[i].l)add(sum[--l]);while(r<b[i].r)add(sum[++r]);while(r>b[i].r)sub(sum[r--]);res[b[i].idx]=ans;}for(int i=0;i<m;i++)printf("%lld\n",res[i]);return 0;
}

codeforces 617E XOR and Favorite Number 莫队相关推荐

  1. CodeForces - 617E XOR and Favorite Number(莫队)

    题目链接:点击查看 题目大意:给出一个由n个数组成的数列,现在给出m组询问,每次询问包含一个l和一个r,要求回答在闭区间[l,r]中有多少组(i,j)满足[i,j]闭区间内的所有数的异或和等于k 题目 ...

  2. CodeForces - 617E XOR and Favorite Number (莫队+前缀和)

    Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...

  3. CodeForces -617E XOR and Favorite Number(莫队)

    题目链接:点击这里 题目大意: 给定一个长度为 nnn 的序列 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​ ,再给出一个数字 kkk , mmm 组询问每组询 ...

  4. Codeforces 617E XOR and Favorite Number

    Discription Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Eac ...

  5. 莫队算法(普通莫队、带修莫队、树上莫队、不删除莫队)学习笔记【理解+套路/核心代码+例题及题解】

    一.理解 我的理解就是巧妙的暴力,利用双指针以及分块思想,巧妙的移动双指针,时间复杂度可以达到O(NlogN). 强推博客:写的又好又全.链接 二.套路 1.普通莫队 [1]核心代码 bool cmp ...

  6. Codeforces617E XOR and Favorite Number (普通莫队)

    题目链接: XOR and Favorite Number 2021.11.11更新了解题思路和代码 大致题意 给定一个长度为nnn的序列aaa, 和一个固定的数值kkk. 有mmm次询问, 每次询问 ...

  7. XOR and Favorite Number CF340E 莫队算法

    题目链接 题意:求给定询问区间[L,R]问有多少连续区间异或值等k,多次询问可以离线. a[i]^a[i+1]^a[i+2]^a[n]=(a[1]^a[2]^a[3]^...^a[i-1])^(a[1 ...

  8. CodeForces 617 E. XOR and Favorite Number

    题目链接: CodeForces 617 E. XOR and Favorite Number 题目描述: 给出n个数,m次查询,每次查询在区间[l, r]里面有多少对(i, j),满足ai ^ ai ...

  9. CF 617E 莫队

    CF 617E 题目链接: http://codeforces.com/problemset/problem/617/E 题意: 问[L,R]区间内,有多少个子区间,它们里元素的异或和为k. 思路: ...

最新文章

  1. PYTHON编程导论群问题汇总(一)
  2. LDAPserver的安装
  3. DataFrame 拼接,筛选,修改
  4. 白话Elasticsearch64-zen discovery集群发现机制
  5. [开源]FreeSCADA的通道数据与控件属性关联以及自动刷新机制研究
  6. 捋一捋PDF、PMF、CDF是什么
  7. JS重写toString(),打印想要的值
  8. 【C++基础】模板基础与函数模板
  9. java 面试代码_java代码编写及面试题
  10. 【百度echarts】实现圆环进度条-代码示例代码demo
  11. 通过CSS,Jquery实现DIV的各种动作(包括漂移,未测试IE6)
  12. Elasticsearch地理位置
  13. 想学python买什么书好-看了许多python书后!我发现学好python这三本书必看
  14. NameError: name 'reload' is not defined等python版本问题解决方案
  15. github action自动部署构建入门
  16. 数学建模相关比赛汇总(含各赛事官方网站链接)
  17. win10桌面穿越,多桌面切换
  18. c语言 节日,农历阳历之间转换和节气节日查询C语言编程
  19. panabit部署模式
  20. Python 基础代码

热门文章

  1. 花朵个人简历自我介绍PPT模板
  2. 如何轻松恢复Windows 10/8/7中覆盖的文件
  3. 【高等数学基础进阶】多元函数的极值与最值
  4. 【狮子数学】chapter2-06-极值与最值
  5. 第七章、外汇业务的核算
  6. 草花机单挑机路单编辑生成器 0.7.9版
  7. 语音情感分析开发者必读之作,一定带来一个解决新方案
  8. 学计算机还要写作文吗,学电脑写作文
  9. 【C#算法实现】QQ小游戏天天连萌(连连看)算法。
  10. fcpx瘦身插件_FCPX常用插件合集