题目大意:
  给定一个长度为$n(n\leq10^5)$的数列$A$和数$k$$(A_i,k\leq10^6)$。$m$组询问,每次询问区间$[l,r]$中有多少对$i,j(l\leq i\leq j\leq r)$,满足$\oplus_{x=i}^jA_x=k$。

思路:
  莫队。
  首先求出数列$A$的前缀异或和$pre[i]$。每次加入一个数$x$时,$cnt[x]++$,$ans+=cnt[x\oplus k]$。删除同理。
  注意区间的范围,因为$\oplus_{x=i}^jA_x=pre[j]\oplus pre[i-1]$,所以对于询问$[l,r]$,实际维护的区间应该是$[l-1,r]$。

 1 #include<cmath>
 2 #include<cstdio>
 3 #include<cctype>
 4 #include<algorithm>
 5 typedef long long int64;
 6 inline int getint() {
 7     register char ch;
 8     while(!isdigit(ch=getchar()));
 9     register int x=ch^'0';
10     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
11     return x;
12 }
13 const int N=100001,M=100000,logK=20;
14 int k,a[N],bel[N],cnt[1<<logK];
15 int64 ans[M],tmp;
16 struct Query {
17     int l,r,id;
18     bool operator < (const Query &another) const {
19         return bel[l]<bel[another.l]||(bel[l]==bel[another.l]&&bel[r]<bel[another.r]);
20     }
21 };
22 Query q[M];
23 inline void ins(const int &x) {
24     tmp+=cnt[a[x]^k];
25     cnt[a[x]]++;
26 }
27 inline void del(const int &x) {
28     cnt[a[x]]--;
29     tmp-=cnt[a[x]^k];
30 }
31 int main() {
32     const int n=getint(),m=getint(),block=sqrt(n);
33     k=getint();
34     for(register int i=1;i<=n;i++) {
35         a[i]=a[i-1]^getint();
36         bel[i]=i/block;
37     }
38     for(register int i=0;i<m;i++) {
39         const int l=getint()-1,r=getint();
40         q[i]=(Query){l,r,i};
41     }
42     std::sort(&q[0],&q[m]);
43     for(register int i=0,l=0,r=-1;i<m;i++) {
44         while(r<q[i].r) ins(++r);
45         while(l>q[i].l) ins(--l);
46         while(r>q[i].r) del(r--);
47         while(l<q[i].l) del(l++);
48         ans[q[i].id]=tmp;
49     }
50     for(register int i=0;i<m;i++) {
51         printf("%lld\n",ans[i]);
52     }
53     return 0;
54 }

转载于:https://www.cnblogs.com/skylee03/p/8425097.html

[CF617E]XOR and Favorite Number/[CQOI2018]异或序列相关推荐

  1. CF617E XOR and Favorite Number

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

  2. CF617E. XOR and Favorite Number

    1 /* 2 CF617E. XOR and Favorite Number 3 http://codeforces.com/contest/617/problem/E 4 莫队算法 5 题意:求l, ...

  3. [CQOI2018]异或序列

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

  4. [CQOI2018] 异或序列

    题目链接:戳我 哈哈哈我竟然秒切了省选题 莫队+异或. 考虑异或的性质,一个数同时异或两次等于没有进行操作.那么我们设a[i]为前i个数的异或和,显然对于一个区间\([l,now]\),\(a[l-1 ...

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

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

  6. CodeForces 617 E. XOR and Favorite Number

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

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

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

  8. 【CF 617E】 XOR and Favorite Number (Mo's algorithm)

    [CF 617E]  XOR and Favorite Number (Mo's algorithm) E. XOR and Favorite Number time limit per test 4 ...

  9. 6759: 异或序列

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

  10. Loj 2534 异或序列

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

最新文章

  1. 牛顿棺材板快盖不住了:用深度神经网络解决三体问题,提速一亿倍
  2. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客
  3. c++中的异常---3(系统标准异常库,编写自己异常类)
  4. org.springframework.http.converter.HttpMessageNotWritableException:
  5. 唯一索引与主键索引的比较
  6. java 日期操作工具类_java8操作日期的工具类
  7. html 怎么给li空格,html 空格
  8. 算数运算符与关系运算符_Swift进阶三——运算符相关
  9. 漫漫长路十多小时,谁是机上WiFi的“业界良心”?
  10. Qt+VS+opencv+zbar打开本机摄像头实现二维码扫码识别功能
  11. Excel VBA-批量导出图片.vba
  12. 得物购买截图生成_这应该是目前为止,iPhone上最好的长截图工具!
  13. python字符串重复元素的删除_python删除列表重复元素
  14. 搭建简单的企业网站,华为云速建站和阿里建站哪个好?
  15. MySQL 第十三章 约束(★★★★★)
  16. Blob和File对象API与兼容性问题
  17. 说明书丨Epigentek EpiNext 高灵敏免疫共沉淀测序试剂盒
  18. 因为卡农,重拾《我的野蛮女友》
  19. 程序员工具大全【持续更新】
  20. 哈马德国际机场在全球最佳机场评选中排名第一;合肥君悦酒店浪漫呈现“悦-七夕”限定晚宴 | 全球旅报...

热门文章

  1. Kaggle酒推荐,winemag-data-130k-v2.csv
  2. 203.移除链表元素
  3. 16广义逆的计算及应用
  4. win10怎样更改系统字体_怎样用电脑光盘重装win10系统?电脑光盘重装系统步骤图文教程...
  5. 为什么xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
  6. 信息安全收集注意事项
  7. Raki的统计学习方法笔记0x2章:感知机
  8. 操作系统面试常问问题
  9. dao获取到mysql存储函数_GreenDao3.0使用
  10. FineReport中统计列中不同数据的个数