莫队算法模板
莫队算法除了add 和 del 其他部分基本不变,就拿一题的题解来当模板用吧。
http://codeforces.com/contest/617/problem/E
题意:
给你n个数,m个查询和一个数值k,然后每次查询输入l,r并问你区间[l,r]内有几对i,j 使得ai⨁ai+1⨁...⨁aj=k。(⨁是异或的意思)
数据范围打开链接看就行
题解:
对于这题我们可以通过处理前缀和算出ai⨁ai+1⨁...⨁aj=k的值,实际上ai⨁ai+1⨁...⨁aj=sum[i−1]⨁sum[j]。
知道这个公式之后,我们再讲讲怎么用莫队处理
我们用一个数组flag[]储存在查询过程中前缀和出现了多少次。为什么要这样做呢?这是因为
sum[i−1]⨁