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 ...
随机推荐
- Atomic Builtins - Using the GNU Compiler Collection (GCC) GCC 提供的原子操作
http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Atomic-Builtins.html gcc从4.1.2提供了__sync_*系列的built-in函数,用 ...
- Robot Framework操作
Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...
- maven 项目 spring mvc + jdbc 配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Linux —— 查找与替换
Linux —— 查找与替换 文本查找: grep, egrep, fgrep grep:根据基本正则表达式定义的模式搜索文档,并将符合模式的文本行显示出来 注意:搜索时属 ...
- git 删除目录
1. 查看本地已经被删除的文件 2. 删除 目录以及目录下的文件 [root@test01 h2_mopub_replace]# git rm ../test_code_driver -r 3. [r ...
- CocoaPoda在iOS开发中的使用
CocoaPoda在iOS开发中的使用 CocoaPods 简介 CocoaPods是iOS开发中不可避免的依赖管理第三方的工具,能简化一些第三方库文件需要添加编译参数及依赖库的繁复工作 CocoaP ...
- MVC架构在游戏开发中的应用
一 定义 MVC即Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写. MVC是一种"前端"的设计模式. MV ...
- [办公自动化]EXCEL不大,但是保存很慢
今天同事有一个excel文件.office 2007格式的. 折腾了半天.按照以往的经验,定位-对象,应该可以删除. 后来在“编辑”窗格的“查找和选择”里面,单击“选择窗格“.可以看到很多”pictu ...
- 调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数
Auto-Keras 是一个开源的自动机器学习库.Auto-Keras 的终极目标是允许所有领域的只需要很少的数据科学或者机器学习背景的专家都可以很容易的使用深度学习.Auto-Keras 提供了一系 ...
- codeforces 688D D. Remainders Game(中国剩余定理)
题目链接: D. Remainders Game time limit per test 1 second memory limit per test 256 megabytes input stan ...