#include <bits/stdc++.h> #define LL long long using namespace std; const int N = 1000010; struct Quary { int l; int r; int num; }; int n, m, w; int block; int l, r; int now; Quary quary[N]; int pos[N]; int ma[N]; LL cnt[N]; ///记录次数 LL ans[N]; bool cmp(Quary a, Quary b) { if(pos[a.l] == pos[b.l]){ return a.r < b.r; } else{ return pos[a.l] < pos[b.l]; } } int main() { while(scanf("%d%d%d", &n, &m, &w) == 3){ ma[0] = 0; l = 1; r = 0; now = 0; cnt[0] = 1; block = sqrt(n); for(int i = 1; i <= n; i ++){ scanf("%d", &ma[i]); ma[i] = ma[i] ^ ma[i - 1]; pos[i] = i / block; } for(int i = 1; i <= m; i ++){ scanf("%d%d", &quary[i].l, &quary[i].r); quary[i].num = i; } sort(quary + 1, quary + m + 1, cmp); for(int i = 1; i <= m; i ++){ while(l < quary[i].l){ del(l - 1); l ++; } while(l > quary[i].l){ l --; add(l - 1); } while(r < quary[i].r){ r ++; add(r); } while(r > quary[i].r){ del(r); r --; } ans[quary[i].num] = now; } for(int i = 1; i <= m; i ++){ printf("%lld\n", ans[i]); } } return 0; }
[模板] - 莫队 - 感谢卿学姐
猜你喜欢
转载自blog.csdn.net/yiranluoshen/article/details/78681957
今日推荐
周排行