XOR and Favorite Number Codeforces - 617E || [CQOI2018]异或序列
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]异或序列的更多相关文章
- XOR and Favorite Number CodeForces - 617E -莫队-异或前缀和
CodeForces - 617E 给n个数, m个询问, 每次询问问你[l, r]区间内有多少对(i, j), 使得a[i]^a[i+1]^......^a[j]结果为k.(注意 i ! = j) ...
- XOR and Favorite Number CodeForces - 617E(前缀异或+莫队)
题意原文地址:https://blog.csdn.net/chenzhenyu123456/article/details/50574169 题意:有n个数和m次查询,每次查询区间[l, r]问满足a ...
- 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 ...
- bzoj 5301 [Cqoi2018]异或序列 莫队
5301: [Cqoi2018]异或序列 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 204 Solved: 155[Submit][Status ...
- bzoj 5301: [Cqoi2018]异或序列 (莫队算法)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5301 题面; 5301: [Cqoi2018]异或序列 Time Limit: 10 Sec ...
- 「luogu4462」[CQOI2018] 异或序列
「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连 ...
- BZOJ5301: [Cqoi2018]异或序列(莫队)
5301: [Cqoi2018]异或序列 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 400 Solved: 291[Submit][Status ...
- P4462 [CQOI2018]异或序列
题目描述 已知一个长度为n的整数数列 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an ,给定查询参数l.r,问在 al,al+1,...,ara_l,a_{l+1 ...
- [bzoj5301][Cqoi2018]异或序列_莫队
异或序列 bzoj-5301 Cqoi-2018 题目大意:题目链接. 注释:略. 想法: 由于a^a=0这个性质,我们将所有的数变成异或前缀和. 所求就变成了求所有的$l_i\le x<y\l ...
随机推荐
- Android双向seekbar(带刻度)
※效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/disso ...
- 【独立开发人员er Cocos2d-x实战 008】BMFont生成位图字体工具和Cocos2dx使用载入fnt文件
1.首先我们须要下载而且安装BMFont工具,下载地址例如以下:http://download.csdn.net/detail/chenqiai0/8899353(里面还有具体的使用文档,假设使用中有 ...
- Bootstrap的js插件之弹出框(popover)
data-toggle="popover"--使弹出框可以切换状态: title--设置弹出框的标题: data-content--设置弹出框的内容部分: data-placeme ...
- uva live 4394 String painter 区间dp
// uva live 4394 String painter // // 这一题是训练指南上dp专题的习题,初看之下认为仅仅是稍微复杂了一点 // 就敲阿敲阿敲,两个半小时后,发现例子过了.然而自己 ...
- 导入项目 R.java没有
网上一搜,各种 Android tools-fix your porject或者Clean ...不好使 其实可能是由于XML布局文件有错误导致,修改掉这些错误就可以了..
- 借助ltp语义分析提取特征,之后,文本生成
"""地点-哪里有做-业务-的(正规|靠谱)-公司?地点-做-业务-的(正规|靠谱)-公司(有哪些?|的联系方式是什么?|哪家口碑好值得信赖?)地点-做-业务-(怎么能省 ...
- Delphi中accesss实现树形结构查询系统(一次性生成比较方便)
主要是要读取数据库的信息,而delphi界面是一个树形结构. 例如有一个Ascess数据库:示例.MDB,内有一张表:“国家”,表的内容如下: 编号 名称 01 ...
- Dom4J XML转bean
package com.baiwang.bop.utils; import com.baiwang.bop.client.BopException; import org.dom4j.Element; ...
- caioj1275&&hdu4035: 概率期望值6:迷宫
期望的大难题,%%ZZZ大佬的解释,不得不说这是一道好题(然而膜题解都没完全看懂,然后就去烦ZZZ大佬) 简单补充几句吧,tmp的理解是个难点,除以tmp的原因是,当我们化简时,子节点也有一个B*f[ ...
- POJ3164 Command Network —— 最小树形图
题目链接:https://vjudge.net/problem/POJ-3164 Command Network Time Limit: 1000MS Memory Limit: 131072K ...