题目链接

  观察什么时候x到y之间那一段可以被统计

  xorsum[x-1]^xorsum[y]=k

  xorsum[x-1]=xorsum[y]^k||xorsum[y]=xorsum[x-1]^k

  莫队维护。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #include<cctype>
  5. #include<cstdlib>
  6. #include<cmath>
  7. #define maxn 200200
  8. using namespace std;
  9. inline long long read(){
  10. long long num=,f=;
  11. char ch=getchar();
  12. while(!isdigit(ch)){
  13. if(ch=='-') f=-;
  14. ch=getchar();
  15. }
  16. while(isdigit(ch)){
  17. num=num*+ch-'';
  18. ch=getchar();
  19. }
  20. return num*f;
  21. }
  22.  
  23. int blo[maxn];
  24. int xum[maxn];
  25. int sum[maxn];
  26. long long ans[maxn];
  27.  
  28. struct Que{
  29. int x,y,id;
  30. bool operator <(const Que a)const{
  31. if(blo[x]!=blo[a.x]) return blo[x]<blo[a.x];
  32. return y<a.y;
  33. }
  34. }q[maxn];
  35.  
  36. int main(){
  37. int n=read(),m=read(),e=read();
  38. int sqt=sqrt(n);
  39. for(int i=;i<=n;++i) blo[i]=(i-)/sqt+;
  40. for(int i=;i<=n;++i) xum[i]=xum[i-]^read();
  41. for(int i=;i<=m;++i) q[i]=(Que){read(),read(),i};
  42. sort(q+,q+m+);
  43. int lef=,rig=;long long now=;
  44. for(int i=;i<=m;++i){
  45. while(lef<q[i].x-){
  46. sum[xum[lef]]--;
  47. now-=sum[xum[lef]^e];
  48. lef++;
  49. }
  50. while(lef>q[i].x-){
  51. lef--;
  52. now+=sum[xum[lef]^e];
  53. sum[xum[lef]]++;
  54. }
  55. while(rig<q[i].y){
  56. rig++;
  57. now+=sum[xum[rig]^e];
  58. sum[xum[rig]]++;
  59. }
  60. while(rig>q[i].y){
  61. sum[xum[rig]]--;
  62. now-=sum[xum[rig]^e];
  63. rig--;
  64. }
  65. ans[q[i].id]=now;
  66. }
  67. for(int i=;i<=m;++i) printf("%lld\n",ans[i]);
  68. return ;
  69. }

【Luogu】P4462异或序列(莫队)的更多相关文章

  1. 洛谷P4462 [CQOI2018]异或序列(莫队)

    题意 题目链接 Sol 一开始以为K每次都是给出的想了半天不会做. 然而发现读错题了维护个前缀异或和然后直接莫队搞就行,. #include<bits/stdc++.h> #define ...

  2. P4462 [CQOI2018]异或序列 莫队

    题意:给定数列 \(a\) 和 \(k\) ,询问区间 \([l,r]\) 中有多少子区间满足异或和为 \(k\). 莫队.我们可以记录前缀异或值 \(a_i\),修改时,贡献为 \(c[a_i\bi ...

  3. bzoj 5301 [Cqoi2018]异或序列 莫队

    5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 155[Submit][Status ...

  4. BZOJ5301:[CQOI2018]异或序列(莫队)

    Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子 序列满足异或和等于 k . 也就是说,对于所 ...

  5. bzoj 5301: [Cqoi2018]异或序列 (莫队算法)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5301 题面; 5301: [Cqoi2018]异或序列 Time Limit: 10 Sec ...

  6. [CQOI2018]异或序列 (莫队,异或前缀和)

    题目链接 Solution 有点巧的莫队. 考虑到区间 \([L,R]\) 的异或和也即 \(sum[L-1]~\bigoplus~sum[R]\) ,此处\(sum\)即为异或前缀和. 然后如何考虑 ...

  7. 【CQOI2018】异或序列 - 莫队

    题目描述 已知一个长度为n的整数数列 $a_1,a_2,...,a_n$​,给定查询参数l.r,问在 $a_l,a_{l+1},...,a_r$​ 区间内,有多少子序列满足异或和等于k.也就是说,对于 ...

  8. CQOI2018异或序列 [莫队]

    莫队板子 用于复习 #include <cstdio> #include <cstdlib> #include <algorithm> #include <c ...

  9. luogu P4462 [CQOI2018]异或序列 |莫队

    题目描述 已知一个长度为n的整数数列a1,a2,...,an,给定查询参数l.r,问在al,al+1,...,ar​区间内,有多少子序列满足异或和等于k.也就是说,对于所有的x,y (I ≤ x ≤ ...

  10. 学习笔记——不带修序列莫队 (luogu2079)小B的询问

    莫队是一种对于询问的离线算法 时间复杂度:O(\(n \sqrt n\)) 大致思想就是 首先将询问离线,然后对原序列分块,使得每一个\(l和r\)都在一个块里 然后按照左节点排序,若所在的块相等,就 ...

随机推荐

  1. 数组 -----JavaScript

    本文摘要:http://www.liaoxuefeng.com/ JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素.(数据里面可以有多个不同类型的元素组成) 要取得Arr ...

  2. C#装箱与拆箱的研究

    在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类.那么,我想问的是它 ...

  3. React后台管理系统- rc-pagination分页组件封装

    1.用户列表页面使用的rc-pagination分页组件 Github地址: https://github.com/react-component/pagination 2.安装 cnpm insta ...

  4. css布局:块级元素的居中

    一.定宽: 1.定位居中(absolute) 方法一: html: <div class="main"></main> css: .main{ width: ...

  5. C++ 容器与继承

    如果容器类型定义为基类类型,那么虽然可以把派生类装进容器中,但是不能通过容器访问派生类自己的public成员,派生类将会倍切掉,只保留派生类的基类部分: 如果把容器定义为派生类类型,那么不能把基类类型 ...

  6. 【前端_js】Chrome禁止缓存的方法

    在前端开发中,浏览器缓存使得我们改了代码后页面不变,得经常手动清理缓存. 1.按如下操作即可禁用浏览器缓存, 这种方法基本能够做到完全禁止缓存,然而缺点是必须要将开发模式一直打开,占用屏幕空间.而且, ...

  7. Python基础:输入与输出(I/O)

    来做一个NLP任务 步骤为: 1.读取文件: 2.去除所有标点符号和换行符,并把所有大写变成小写: 3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序: 4.将结果按行输出到文件 out. ...

  8. Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  9. 免费证书Let’s Encrypt

    我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书.而一般的 SSL 安全证书签发服务都比较贵,比如 G ...

  10. C、C++混合调用——博客收藏

    C与C++接口相互调用:https://www.cnblogs.com/feige1314/p/7890982.html C.C++混合调用:https://www.cnblogs.com/xuany ...