【CQOI2018】异或序列 - 莫队
题目描述
已知一个长度为n的整数数列 $a_1,a_2,...,a_n$,给定查询参数l、r,问在 $a_l,a_{l+1},...,a_r$ 区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y (I ≤ x ≤ y ≤ r),能够满足$a_x\bigoplus a_{x+1} \bigoplus ... \bigoplus a_y = k$的x,y有多少组。
思路
记一个异或前缀和 val,问题就转换成有多少对数异或等于 k
直接上莫队
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
int n,m,k,block,cnt[maxn],val[maxn];
long long tot,ans[maxn];
struct Query {
int l,r,num;
inline bool operator < (Query cmp) const {
if (l/block != cmp.l/block) return l/block < cmp.l/block;
return r/block < cmp.r/block;
}
}q[maxn];
inline void add(int x) { tot += cnt[x^k]; cnt[x]++; }
inline void del(int x) { tot -= cnt[x^k]+(!k); cnt[x]--; }
int main() {
scanf("%d%d%d",&n,&m,&k);
block = sqrt(n);
for (int i = 1;i <= n;i++) scanf("%d",&val[i]),val[i] ^= val[i-1];
for (int i = 1;i <= m;i++) {
scanf("%d%d",&q[i].l,&q[i].r);
q[i].l--;
q[i].num = i;
}
sort(q+1,q+m+1);
int l = 1,r = 0;
for (int i = 1;i <= m;i++) {
while (l > q[i].l) add(val[--l]);
while (l < q[i].l) del(val[l++]);
while (r < q[i].r) add(val[++r]);
while (r > q[i].r) del(val[r--]);
ans[q[i].num] = tot;
}
for (int i = 1;i <= m;i++) printf("%lld\n",ans[i]);
return 0;
}
【CQOI2018】异或序列 - 莫队的更多相关文章
- 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 ...
- BZOJ5301:[CQOI2018]异或序列(莫队)
Description 已知一个长度为 n 的整数数列 a[1],a[2],…,a[n] ,给定查询参数 l.r ,问在 [l,r] 区间内,有多少连续子 序列满足异或和等于 k . 也就是说,对于所 ...
- 洛谷P4462 [CQOI2018]异或序列(莫队)
题意 题目链接 Sol 一开始以为K每次都是给出的想了半天不会做. 然而发现读错题了维护个前缀异或和然后直接莫队搞就行,. #include<bits/stdc++.h> #define ...
- [CQOI2018]异或序列 (莫队,异或前缀和)
题目链接 Solution 有点巧的莫队. 考虑到区间 \([L,R]\) 的异或和也即 \(sum[L-1]~\bigoplus~sum[R]\) ,此处\(sum\)即为异或前缀和. 然后如何考虑 ...
- P4462 [CQOI2018]异或序列 莫队
题意:给定数列 \(a\) 和 \(k\) ,询问区间 \([l,r]\) 中有多少子区间满足异或和为 \(k\). 莫队.我们可以记录前缀异或值 \(a_i\),修改时,贡献为 \(c[a_i\bi ...
- CQOI2018异或序列 [莫队]
莫队板子 用于复习 #include <cstdio> #include <cstdlib> #include <algorithm> #include <c ...
- luogu P4462 [CQOI2018]异或序列 |莫队
题目描述 已知一个长度为n的整数数列a1,a2,...,an,给定查询参数l.r,问在al,al+1,...,ar区间内,有多少子序列满足异或和等于k.也就是说,对于所有的x,y (I ≤ x ≤ ...
- BZOJ5301: [Cqoi2018]异或序列(莫队)
5301: [Cqoi2018]异或序列 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 400 Solved: 291[Submit][Status ...
随机推荐
- 数据库分布式事务XA规范介绍及Mysql底层实现机制
1. 引言 分布式事务主要应用领域主要体现在数据库领域.微服务应用领域.微服务应用领域一般是柔性事务,不完全满足ACID特性,特别是I隔离性,比如说saga不满足隔离性,主要是通过根据分支事务执行成功 ...
- JSON.stringify和JSON.parse的用法
用法概述 所有的现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容: JSON.parse(string) 接受一个 JSON 字符串并将其转换成一个 JavaScri ...
- 想进大厂?字节跳动等独角兽公司都在招募Python工程师!(Python就是第一语言)
在本文章中,作者通过自身经历,力求客观的谈谈个人选择学习Python的动机,以及独角兽公司对Python工程师的要求及薪资. 从目前各种迹象(企业招聘,语言排名等)看来Python相对Java应该是暂 ...
- Springboot(一)springboot简介与入门程序
一.springboot简介: 对spring框架盛行了多年的java方向开发人员来说,每个人java开发已经把spring框架当做开发中不可或缺的一部分. 之前传统的模式都是以application ...
- 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载
目录 1. Streams简介 1.1 创建Stream 1.2 Streams多线程 1.3 Stream的基本操作 Matching Filtering Mapping FlatMap Reduc ...
- spring boot 项目连接数据库查询数据过程
spring boot 项目搭建 pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...
- 萌新学渗透系列之Hack The Box_Legacy
我将我的walkthrough过程用视频解说的形式记载 视频地址https://www.bilibili.com/video/BV1mZ4y1u7jG 一是因为看我视频的后来者应该都是刚入门的新手,视 ...
- pycharm 退出虚拟环境
pycharm 内置虚拟环境 venv 如果要退出就直接 deactivate 命令就行 运行的话直接在命令行输python3 文件名
- 进度条函数 -------ajax初试
做一个显示任务完成情况的进度条: <!DOCTYPE html> <html> <head> <meta charset="utf-8"& ...
- 【JMicro】微服务部署example.provider应用
JMicro是一个用Java语言实现的开源微服务全家桶, 源码地址:https://github.com/mynewworldyyl/jmicro, Demo地址:http://124.70.152. ...