莫队 Codeforces Round #340 (Div. 2) E
Posted 不知姓名的黑猫君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫队 Codeforces Round #340 (Div. 2) E相关的知识,希望对你有一定的参考价值。
题目大意:给你一个长度为n的序列,有m个询问,每次询问一个区间[L,R],表示这个区间内,有多少的a[i]^a[i+1].....^a[j]=k。
思路:莫队去搞就好了
我们定义pre[i]=a[1]^a[2]^....a[i],然后我们再去更新就好了,这里,我们定义区间[L,R]表示我们所要询问的区间即可。然后这里会有一个疑惑,就是为什么while(l<Q[i].l) { Delete(l-1); l++; }和while(l>Q[i].l) { l--; Updata(l-1); }是这样子呢,这样子的话L和R的区间岂不是少删除了一个区间吗——但是其实不是这样的,因为我们要就比如说目前我们要求[3,5]这个区间,我们要保留pre[2]这个区间,这样的话,才能保证pre[i]^pre[2]才是我们所需要的区间
具体代码看卿学姐的吧:链接
以上是关于莫队 Codeforces Round #340 (Div. 2) E的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法
Codeforces Round #340 (Div. 2) E XOR and Favorite Number 莫队板子
Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法 + 异或和前缀和的巧妙
CodeFroce Round 340 div2 E XOR and Favorite Number莫队算法