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 ...
随机推荐
- JAVA原始的导出excel文件,快捷通用 方便 还能够导出word文档哦
如今导出excel基本上都是用poi了,当报表格式非常负责的时候 开发难度会加大 假设报表有格式有变化 那就更复杂了,先发现一个非常老的技术.能够解决格式复杂的报表. 实例代码例如以下: <%@ ...
- 一例Ext4文件系统fsck后损坏的修复过程
1.故障发生背景 Ext4文件系统没有umount下来,之后做了fsck操作检查一致性,结果导致Ext4文件mount不上(有时也会表现为导致目录变成了文件). 报错提示信息:mount: wrong ...
- centos编辑界面和图形界面登陆切换设置
输入命令 vi /etc/inittab 到最后一行.把5改成3 保存退出. 各数字的含义: # 0 - halt (Do NOT set initdefault to this) ...
- CSS多种方法实现分隔线
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...
- OSChinaclient源代码学习(2)--缓存的设计
一.缓存的作用 请求数据的时候,首先进行推断,能否够从缓存中获取数据,假设满足条件,则直接从缓存中获取数据.否则请求新的数据.这样比没有缓存的情况下.每次都要从server请求数据要快,并且.没有网的 ...
- 《TCP/IP具体解释》读书笔记(22章)-TCP的坚持定时器
TCP通过让接收方指明希望从发送方接收的数据字节数(即窗体大小)来进行流量控制. 假设窗体大小为0会发生什么情况呢?这将有效阻止发送方传送数据,直到窗体变为非0为止. ACK的传输并不可靠,也就是说, ...
- Django框架之ORM
1,字段和字段的参数 1.1>ORM的概念:对象映射模型(Objects Relational Model)是一种为了解决面向对象和关系型数据库存在的互不匹配的现象和技术,简单的说,ORM是通过 ...
- TF-IDF(term frequency–inverse document frequency)
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. TF- ...
- Pulse-code modulation
脉冲编码调制(Pulse Code Modulation,PCM),由A.里弗斯于1937年提出的,这一概念为数字通信奠定了基础,60年代它开始应用于市内电话网以扩充容量,使已有音频电缆的大部分芯线的 ...
- UPDATE command denied DELETE
可用磁盘空间不足 支持SELECT information_schema. TABLES