https://www.luogu.org/problemnew/show/P4462

http://codeforces.com/problemset/problem/617/E

这个是莫队裸题了吧。。。

然而,注意:

1.答案开longlong

2.要用桶来代替map/unordered_map,不然会T;桶的大小要大于两倍值域(这是较松的上限,实际上限就是值域内两个数异或能得到的最大值,大概就是值域转换成二进制后每一位变成1后再转回十进制得到的值吧)

CF

 #include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
int sum[];
int l=,r=,blo,n,m,k;LL ans;
int s1[],s2[];
struct Q
{
int l,r,num;LL ans;
}q[];
bool operator<(const Q &a,const Q &b)
{
return ((a.l-)/blo==(b.l-)/blo)?a.r<b.r:a.l<b.l;
}
bool cmp(const Q &a,const Q &b)
{
return a.num<b.num;
}
void addR()
{
++r;
s1[sum[r-]]++;s2[sum[r]]++;
ans+=s1[sum[r]^k];
}
void delR()
{
ans-=s1[sum[r]^k];
s1[sum[r-]]--;
s2[sum[r]]--;
--r;
}
void addL()
{
--l;
s1[sum[l-]]++;s2[sum[l]]++;
ans+=s2[sum[l-]^k];
}
void delL()
{
ans-=s2[sum[l-]^k];
s1[sum[l-]]--;
s2[sum[l]]--;
++l;
}
int main()
{
int i;
scanf("%d%d%d",&n,&m,&k);blo=sqrt(n+0.5);
for(i=;i<=n;i++) scanf("%d",&sum[i]),sum[i]^=sum[i-];
for(i=;i<=m;i++) scanf("%d%d",&q[i].l,&q[i].r),q[i].num=i;
sort(q+,q+m+);
for(i=;i<=m;i++)
{
//printf("%d %d\n",q[i].l,q[i].r);
while(r<q[i].r) addR();
while(l>q[i].l) addL();
while(r>q[i].r) delR();
while(l<q[i].l) delL();
q[i].ans=ans;
}
sort(q+,q+m+,cmp);
for(i=;i<=m;i++) printf("%lld\n",q[i].ans);
return ;
}

XOR and Favorite Number Codeforces - 617E || [CQOI2018]异或序列的更多相关文章

  1. XOR and Favorite Number CodeForces - 617E -莫队-异或前缀和

    CodeForces - 617E 给n个数, m个询问, 每次询问问你[l, r]区间内有多少对(i, j), 使得a[i]^a[i+1]^......^a[j]结果为k.(注意 i ! =  j) ...

  2. XOR and Favorite Number CodeForces - 617E(前缀异或+莫队)

    题意原文地址:https://blog.csdn.net/chenzhenyu123456/article/details/50574169 题意:有n个数和m次查询,每次查询区间[l, r]问满足a ...

  3. XOR and Favorite Number CodeForces - 617E

    a[i]^a[i+1]--a[j]=k; 处理前缀和pre[i] 那么上式可以表示为pre[i-1]^pre[j]=k; #include<bits/stdc++.h> using nam ...

  4. bzoj 5301 [Cqoi2018]异或序列 莫队

    5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 155[Submit][Status ...

  5. bzoj 5301: [Cqoi2018]异或序列 (莫队算法)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5301 题面; 5301: [Cqoi2018]异或序列 Time Limit: 10 Sec ...

  6. 「luogu4462」[CQOI2018] 异或序列

    「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连 ...

  7. BZOJ5301: [Cqoi2018]异或序列(莫队)

    5301: [Cqoi2018]异或序列 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 400  Solved: 291[Submit][Status ...

  8. P4462 [CQOI2018]异或序列

    题目描述 已知一个长度为n的整数数列 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​ ,给定查询参数l.r,问在 al,al+1,...,ara_l,a_{l+1 ...

  9. [bzoj5301][Cqoi2018]异或序列_莫队

    异或序列 bzoj-5301 Cqoi-2018 题目大意:题目链接. 注释:略. 想法: 由于a^a=0这个性质,我们将所有的数变成异或前缀和. 所求就变成了求所有的$l_i\le x<y\l ...

随机推荐

  1. 【转载】Unix设计哲学 & 回车换行八卦 & EOF八卦 & UNIX目录结构八卦

    昨天看了这篇文章 <关于Unix哲学> 首先用了两个例子,用风扇吹出空肥皂盒 和 太空铅笔,来说明简单设计也能派上作用吧. Unix哲学,Wikipedia上列出了好几个版本,不同的人有不 ...

  2. [NPM] npm check to update the dependencies

    To update the dependencies in the project, we can run: npx npm-check -u

  3. [LeetCode][Java] Subsets

    题目: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset ...

  4. M公司入职记

    非常遗憾,我又跳槽了,到传说中的M公司,第一天就体会到了,神马叫差距. 要求9点30到,提前10分钟到了前台.前台MM懵懂的跟我说入职找人事,好吧. 电话联系相关人等,等到10点左右,被引导到一位不知 ...

  5. JAVA学习(七):方法重载与方法重写、thiskeyword和superkeyword

    方法重载与方法重写.thiskeyword和superkeyword 1.方法重载 重载可以使具有同样名称但不同数目和类型參数的类传递给方法. 注: 一是重载方法的參数列表必须与被重载的方法不同,而且 ...

  6. 【大数据project师之路】Hadoop——MapReduce概述

    一.概述. MapReduce是一种可用于数据处理的编程模型.Hadoop能够执行由各种语言编写的MapReuce程序.MapReduce分为Map部分和Reduce部分. 二.MapReduce的机 ...

  7. transport transmission

    运输层 transport layer 传输控制协议 transmission control protocol

  8. [NOI2018] 归程 可持久化并查集

    题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个n 个节点.m 条边的无向连通图(节点的编号从 1至 n).我们依次用 l,a描述一条边的长度.海拔. ...

  9. nginx性能优化技巧

    前几天买了本高俊峰的<高性能Linux服务器构建实战I>,网上都说运维必备手册,昨天看了目录加小50页感觉还是比较扩充视野的,很多东西在学校是不可能学到的,就是感觉有的地方讲的仍然不是很清 ...

  10. YTU 2902: H-Sum 3s

    2902: H-Sum 3s 时间限制: 1 Sec  内存限制: 128 MB 提交: 139  解决: 28 题目描述 You are given a number sequence a1,a2, ...