[upcoj6759]异或序列 莫队

【XSY3313】异或和(xorsum)(结论) 先上一个结论。 一个长度为 nnn 的 010101 序列,其每个子序列的异或和的和为 [序列中包含1]2n−1[序列中包含 1]2^{n-1}[序列中包含1]2n−1。 证明:考虑若不存在 111,则显然。否则若存在 111,随便选一个 111 出来,不失一般性地设为第 111 位,然后考虑第 2∼n2\sim n2∼n 位的某个子序列的异或和 sss,第 111 位的 111 有且仅有一种选取方式使得 sss 变为 111。故整个序列每个子序列的异或和的和就是第 2∼n2\sim n2∼n 位的子序 阅读详情

时间限制: 1 Sec 内存限制: 128 MB

题目描述

已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少组。

输入

输入第一行为3个整数n,m,k。第二行为空格分开的n个整数,即a1,a2,…,an。接下来m行,每行两个整数lj,rj,代表一次查询。

输出

输出共m行,对应每个查询的计算结果。

样例输入

4 5 1
1 2 3 1
1 4
1 3
2 3
2 4
4 4

样例输出

4
2
1
2
1

提示

对于30%的数据,1≤n,m≤1000。
对于100%的数据,1≤n,m≤10^5,0≤k,ai≤10^5,1≤lj≤rj≤n。

来源/分类

重庆OI2018

Solution

讲m种询问离线下来,分区,x=sqrt(m),按照分区标号从小到大,同一小区间r从小到大排序;
借助异或前缀和,sum[i]=sum[i-1]^a[i],之后有a[l]^a[l+1]^…^a[r]=sum[r]^sum[l-1];
此处[curL,curR]是闭区间。
——鄙人手中的第二个莫队代码

#include<bits/stdc++.h>

#define ll long long
#define L(u) u<<1
#define R(u) u<<1|1

using namespace std;
const int MX = 100001;
int n, m, k;
int a[MX], s[MX<<1];
int x, curL, curR, res;
int pos[MX];
ll ans[MX];

struct data {
    int L, R, id;

    bool operator<(const data &b) const {
        if (pos[L] == pos[b.L]) return R < b.R;
        return L < b.L;
    }
} q[MX];

inline void add(int p) {
    s[a[p]]++;
    res += s[a[p]^k];
}
inline void del(int p) {
    res -= s[a[p]^k];
    s[a[p]]--;
}
inline void addL(int l, int r) {}

inline void delL(int l, int r) {}

inline void addR(int l, int r) {}

inline void delR(int l, int r) {}


int main() {
    //freopen("../in", "r", stdin);
    scanf("%d%d%d", &n, &m, &k);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &a[i]);
        a[i] = a[i - 1] ^ a[i];
    }

    x = sqrt(n);
    for (int i = 0; i < m; ++i) {
        q[i].id = i;
        pos[i] = i / x;
        scanf("%d%d", &q[i].L, &q[i].R);
        q[i].L--;
    }

    sort(q, q + m);
    res = 0, curL = 0, curR = -1;
    for (int i = 0; i < m; ++i) {
        while (curL < q[i].L) del(curL++);
        while (curL > q[i].L) add(--curL);
        while (curR < q[i].R) add(++curR);
        while (curR > q[i].R) del(curR--);
        ans[q[i].id] = res;
    }
    for (int i = 0; i < m; ++i)
        printf("%d\n", ans[i]);
    return 0;
}
问题 A: 异或序列 问题 A: 异或序列 时间限制: 1 Sec  内存限制: 128 MB 提交: 188  解决: 86 [提交] [状态] [讨论版] [命题人:admin] 题目描述 已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,... 阅读详情

相关推荐

ORACLE pl/sql自定义函数、存储过程

ORACLE pl/sql自定义函数 实验六、七 PL/SQL编程(2) 目的和要求: 1.​ 掌握存储过程和函数的使用 2.​ 掌握游标的使用 3.​ 掌握程序包的使用 4.​ 掌握触发器的使用 实验内容: SCOTT用户拥有DEPT、EMP、SALGRADE表对象,其中, DEPT是部门信息表,包括:部门编号、部门名称、部门地址三个属性,即DEPT(DEPTNO,DNAME,LOC)。 E...

ACM2017 1913

UPC 6759: 异或序列 (莫队)

http://exam.upc.edu.cn/problem.php?id=6759&amp;csrf=AWWfybpKsKLefCisDelSWzkUNekgkJ8M 6759: 异或序列 时间限制: 1 Sec  内存限制: 128 MB 提交: 158  解决: 67 [提交] [状态] [讨论版] [命题人:admin] 题目描述 已知一个长度为n的整数数列a1,a2,…,an,给...

A_Thinking_Reed_的博客 322

Cadence Allegro安装全攻略:从准备到优化的完整指南

本文提供了一份详尽的Cadence Allegro安装教程,涵盖从系统准备、硬件要求到获取安装文件的完整前期工作。指南逐步解析了自定义安装、路径选择及核心组件配置,并重点阐述了许可证服务器的环境变量设置与服务启动等关键激活步骤,最后给出了首次启动验证、个性化优化及常见问题排错方案,助您高效完成安装与配置。

weixin_29243063的博客 186

6759: 异或序列 UPC (莫队算法)

6759: 异或序列 时间限制: 1 Sec  内存限制: 128 MB 提交: 160  解决: 67 [提交] [状态] [讨论版] [命题人:admin] 题目描述 已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有...

Pandapan1997的博客 506

wps js宏获取工作簿、工作表、单元格的值、链接转图片、单元格区域数据转二维数组、保存工作簿的常用Excel操作

wps js宏入门看这里,我写了常用的js操作Excel的方法:获取工作簿对象、获取工作表对象、获取单元格的值、链接转图片、生成条形码图片、单元格区域数据转二维数组方法、保存工作簿、弹出输入框、YesNo选择框,助你从VBA转战JS。

huaermeier的博客 3万+

海康工业相机排雷笔记02-像素格式解析

工业相机使用过程记录 02-像素格式解析 通过将相机输出图像裸数据raw格式直接存图查看 一、黑白/Mono 直接使用相机测试图像存图: 图像中各部分灰度分别为:0、36、73、109、146、182、219、255,以灰度73列为例 (1)Mono 8 该列图像数据为十六进制49,十进制为73,那么Mono 8就是每个像素点占8bit,依次排列。 (2)Mono 10 该列图像数据为十六进制2401,由于相机均为小端数据,实际数据应解析为0124,十进制为292=73*4,那么Mono 10格式为每

yonghuming_66的博客 8360

bzoj4540: [Hnoi2016]序列

题目链接bzoj4540题目描述Description  给定长度为n的序列:a1,a2,…,an,记为a[1:n]。类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar-1,ar。若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列。现在有q个询问,每个询问给定两个数l和r,1≤l≤r≤n,求a[l:r]的不同子序列的最小值之和。例如,给定序列5,2,4,1,3,询

zmh的博客 2462

ardupilot SBUS输入捕获

本节主要记录ardupilot 的sbus 输入捕获功能。ardupilot 默认支持多种无线协议控制输入设备,比如常用的PPM,SBUS,IBUS,DSM,SUMD,SRXL等协议,本节主要讲解ardupilot 如何通过定时器的pwm输入捕获来获取sbus数据。

陌城烟雨 271

异或序列

题目描述 已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少组。   输入 输入第一行为3个整数n,m,k。第二行为空格分开的n个整数,即a1,a2,…,an。接下来m行,每行两个整数lj,rj,代表一次查询。  ...

weixin_41370251的博客 958

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程

计算机视觉论文复现指南:从理论到可运行代码的保姆级教程​ ,人工智能,计算机视觉,大模型,AI,本文围绕计算机视觉论文复现展开,介绍从理论到可运行代码的全流程。先强调复现的重要性,再讲解复现前的准备,包括明确目标、构建工具链;接着说明代码获取分析、环境配置调优、调试运行技巧及结果验证优化方法,还推荐了高效工具,提及复现中的伦理规范。旨在助读者掌握复现方法论,实现从经典模型到前沿论文的复现,推动学术成果落地。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 12万+

隧道裂缝检测【C++PCL】

我们团队注重每一个细节,确保代码的可读性、可维护性和可扩展性达到最高标准。我们严格遵循行业最佳实践,采用模块化和面向对象的设计原则,使得我们的代码结构清晰且易于理解。我们的点云服务更是引以为傲。我们的技术团队拥有深厚的专业知识和丰富的经验,能够提供高度准确和高效的点云处理服务。无论是点云的获取、存储还是分析,我们都能够满足客户的需求,并提供出色的解决方案。我们的技术实力也是无与伦比的,拥有广泛的技术背景和深入的专业知识。

weixin_45196569的博客 849

给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。

给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。 #include using namespace std; int min_seri_len(int *a, int n, int S){ int i = 0; int j = 0; int min_len = 0; int * sum

hero_fantao的专栏 5955

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

bzoj4540【HNOI2016】序列

莫队算法+单调栈+前缀和

AaronPolaris 2724

图神经网络与大模型融合的理论综述:架构、机制与未来方向

然而,它们普遍缺乏对图结构数据的原生支持,无法直接处理边、节点之间的拓扑关系,这限制了其在关系密集型任务中的表现 [23]。2020年发布的BERT [16] 开启了自监督预训练时代,而2021年后,T5 [17]、PaLM [18]、LLaMA [19] 等模型相继推出,参数规模突破千亿级,展现出惊人的上下文学习(In-context Learning)与链式推理(Chain-of-Thought)能力 [20]。例如,将医学影像作为图节点,结合病理报告文本,实现更精准的疾病诊断 [58]。

andeyeluguo的博客 295

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

upc 6759 异或序列(莫队)

题目描述 已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少组。 输入 输入第一行为3个整数n,m,k。第二行为空格分开的n个整数,即a1,a2,…,an。接下来m行,每行两个整数lj,rj,代表一次查询。 输出 ...

eternityZZing的博客 306

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

upc 6759 异或序列 【莫对算法+前缀异或】

题目描述 已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少组。   输入 输入第一行为3个整数n,m,k。第二行为空格分开的n个整数,即a1,a2,…,an。接下来m行,每行两个整数lj,rj,代表一次查询。  ...

Destinymiao的博客 350

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

poj2236

Wireless Network Time Limit:10000MS Memory Limit:65536K Total Submissions:10043 Accepted:4245 Description An earthquake takes place in Southeast Asia. The A...

weixin_34221773的博客 370

东大OJ 2SAT 异或

看了十年才懂懂了十年才会会了十年才会写写了十年才写完写完了十年才能改对 #include<stdio.h> #include<string.h> struct res{ int steps; int father; }; int a[50001]; res findfather(int me){ res r; r.steps = 0; while...

185

BZOJ 4542([Hnoi2016]序列-莫队)

Description  小 B 有一个很大的数 S,长度达到了 N 位;这个数可以看成是一个串,它可能有前导 0,例如00009312345 。小B还有一个素数P。现在,小 B 提出了 M 个询问,每个询问求 S 的一个子串中有多少子串是 P 的倍数(0 也 是P 的倍数)。例如 S为0077时,其子串 007有6个子串:0,0,7,00,07,007;显然0077的子串007有6个子串都是素

nike0good |Oier&ACMer | 熟能生巧 562

杭电oj2095用到了异或运算!

#include   int main()   {       int T;       int n,m;       while(~scanf("%d",&T),T){           scanf("%d",&n);           T--;           while(T--){               scanf("%d",&m);

dukig的博客 531

中石油 6759: 异或序列 (莫队算法 现学现用)

已知一个长度为n的整数数列a1,a2,…,an,给定查询参数l、r,问在al,al+1,…,ar区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y(l≤x≤y≤r),满足ax⊕ax+1⊕⋯⊕ay=k的x,y有多少组。   输入 输入第一行为3个整数n,m,k。第二行为空格分开的n个整数,即a1,a2,…,an。接下来m行,每行两个整数lj,rj,代表一次查询。   输出 ...

qq_41485193的博客 334

&& || ! and or not xor

&& || ! ^ equals and or not xor #include using namespace std; int a=1,b=2,c=3; int main() { if (a<b and b<c) cout<<1<<endl; if (ac) cout<<2<<endl; if (not(a>b)) cout<<3<<endl;

ACM2017 882

Oracle 0305

Ref: http://www.w3school.com.cn/sql/sql_dates.asp https://blog.youkuaiyun.com/qq_20989105/article/details/76190566 Build: sqlplus Jsj202/Jsj123456@orcl CREATE TABLE DEPT(DEPTNO INT PRIMARY KEY, DNAME VARCH...

ACM2017 657

AtCoder ARC 084 E - Finite Encyclopedia of Integer Sequences (AtCoder 3622)

E - Finite Encyclopedia of Integer Sequences 题目传送门 Time limit : 2sec / Memory limit : 256MB Score : 800 points Problem Statement In Finite Encyclopedia of Integer Sequences (FEIS), all integer ...

ACM2017 402
上一篇: 2018 ACM 国际大学生程序设计竞赛上海大都会赛 F [Color it]
下一篇: HDU 多校联合训练第六场 1009 ( Werewolf )
cybbsc
博客等级 码龄10年 15粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值