题目链接:戳我

哈哈哈我竟然秒切了省选题

莫队+异或。

考虑异或的性质,一个数同时异或两次等于没有进行操作。那么我们设a[i]为前i个数的异或和,显然对于一个区间\([l,now]\),\(a[l-1]\oplus a[now]\)就是这个区间里面所有的数的异或和。如果\(a[l-1]\oplus a[now]=k\)那么ans++,这等同于\(a[l-1]=k\oplus a[now]\)。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define MAXN 100010
using namespace std;
int n,m,k,len,ans;
int sum[MAXN],a[MAXN],ansans[MAXN];
struct Node{int l,r,id,t;}t[MAXN];
inline bool cmp(struct Node x,struct Node y)
{if(x.t!=y.t) return x.t<y.t;return x.r<y.r;
}
inline void add(int pos)
{ans+=sum[k^a[pos]];sum[a[pos]]++;
}
inline void del(int pos)
{sum[a[pos]]--;ans-=sum[k^a[pos]];
}
int main()
{#ifndef ONLINE_JUDGEfreopen("ce.in","r",stdin);#endifscanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]^=a[i-1];len=sqrt(n);for(int i=1;i<=m;i++){scanf("%d%d",&t[i].l,&t[i].r);t[i].l--;t[i].id=i,t[i].t=(t[i].l-1)/len+1;}sort(&t[1],&t[1+m],cmp);int l=1,r=0;for(int i=1;i<=m;i++){while(t[i].l>l) del(l++);while(t[i].l<l) add(--l);while(t[i].r<r) del(r--);while(t[i].r>r) add(++r);ansans[t[i].id]=ans;}for(int i=1;i<=m;i++)printf("%d\n",ansans[i]);return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10311261.html

[CQOI2018] 异或序列相关推荐

  1. [CQOI2018]异或序列

    [CQOI2018]异或序列 题意: 给定1个整数K,离线询问[l,r]中有多少子区间xor和=K. 题解: 异或有个重要的性质:它的逆运算就是自身 我们维护该数列的前缀异或和a[x],表示1到x的区 ...

  2. BZOJ5301:[CQOI2018]异或序列——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5301 https://www.luogu.org/problemnew/show/P4462 已知 ...

  3. 6759: 异或序列

    6759: 异或序列 时间限制: 1 Sec  内存限制: 128 MB 题目描述 已知一个长度为n的整数数列a1,a2,-,an,给定查询参数l.r,问在al,al+1,-,ar区间内,有多少子序列 ...

  4. Loj 2534 异或序列

    Loj 2534 异或序列 考虑莫队离线处理.每加一个数,直接询问 \(a[x]\oplus k\) 的前/后缀数目即可,减同理. 利用异或的优秀性质,可以维护异或前缀和,容易做到每次 \(O(1)\ ...

  5. 【LOJ】#2534. 「CQOI2018」异或序列

    题解 每个数都处理成前缀和,就相当于问\([l - 1,r]\)有几个数对\(x,y\),\(sum[x] ^ sum[y] = k\) 直接莫队即可 代码 #include <bits/std ...

  6. luogu4462 异或序列

    题目大意 给出n,m,k,有n个数的序列,m次询问一段区间,问异或和等于K的子区间的个数. 题解 本题一看就是莫队.但要解决该题需要以下性质: 定理: $$a\oplus b=c\Leftrighta ...

  7. 【Luogu】P4462异或序列(莫队)

    题目链接 观察什么时候x到y之间那一段可以被统计 xorsum[x-1]^xorsum[y]=k xorsum[x-1]=xorsum[y]^k||xorsum[y]=xorsum[x-1]^k 莫队 ...

  8. Jozky 刷题目录

    文章目录 本目录参考OI-Wiki 还未解决专区 算法基础 枚举 模拟 递归&分治 贪心 排序 前缀和&差分 二分 倍增 构造 搜索 DFS && BFS 双向搜索 启 ...

  9. CF617E XOR and Favorite Number

    CF617E XOR and Favorite Number 已知一个序列 \(a_1,\ a_2,\ \cdots,\ a_n\) 和 \(k\) ,\(m\) 次询问给出 \(l,\ r\) ,求 ...

最新文章

  1. Centos6.5-----nagios快速安装编译配置文档-全部虚拟环境
  2. re2c php,PHP的词法解析器:re2c
  3. 手机控件查看工具uiautomatorviewer
  4. python填充空值_Python机器学习(九十一)Pandas 填充(Imputation)空值
  5. 如果在系统里面无法格式化磁盘可以尝试以下方法
  6. java为什么要初始化_JAVA中到底要怎么样初始化
  7. 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
  8. 笨方法“学习python笔记之打印及注释
  9. 如何将Webpack与React结合使用:深入的教程
  10. Mysql基础--表的操作
  11. springcloud断路器修改熔断时间_SpringCloud(四)Hystrix服务降级,服务熔断
  12. “微积分7天搞定”学习记录
  13. Oracle数据库增删改查
  14. centos8同步时间安装时间校准服务
  15. RTX3070深度学习环境配置
  16. mindmanager2021思维导图利器有效序列号秘钥
  17. 学电子信息工程,出路在哪里?
  18. vue配置解决跨域问题
  19. Elasticsearch:ingest pipeline 使用示例 - 解析常用日志格式
  20. 腾讯会议共享屏幕播放PPT的时候可以实现只能在自己电脑上可以看到PPT的备注么?

热门文章

  1. win7+centos7.2双系统安装
  2. django之视图系统 views.py--主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)...
  3. hdu6165(拓扑排序+tarjan缩点)
  4. 关于如何准备一份制胜简历的清单
  5. GNU C和ANSI C的区别
  6. weboffice 应用
  7. Flex前端与Java服务端交互,反射机制挑大旗
  8. 职业生涯中的八大“定位法则”(转)
  9. 用单循环链表实现约瑟夫问题。
  10. [SCOI2010]股票交易