NC14247 Xorto

题目

题目描述

给定一个长度为 \(n\) 的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为 \(0\) 。

输入描述

第一行一个数 \(n\) 表示数组长度;

第二行 \(n\) 个整数表示数组;

\(1 \leq n \leq 1000\), \(0\leq 数组元素 < 100000\) 。

输出描述

一行一个整数表示答案。

示例1

输入

3
0 0 0

输出

5

说明

([1,1],[2,2]),([1,1],[3,3]),([1,1],[2,3]),([1,2],[3,3]),([2,2],[3,3])

题解

思路

知识点:前缀异或和+枚举。

注意到区间是不重合但长度不定,考虑枚举左区间的右端点 \(i\) 。对于某个左区间右端点 \(i\) ,枚举左区间左端点 \(j\) ,左区间可能被右区间重复匹配,考虑利用数组 \(cnt\) 记录某个异或值的左区间个数;对于某个左区间右端点 \(i\) ,固定右区间左端点为 \(i+1\), 枚举右区间的右端点 \(j\) ,与之前记录的 \(cnt\) 进行匹配。

时间复杂度 \(O(n^2)\)

空间复杂度 \(O(1)\)

代码

#include <bits/stdc++.h>

using namespace std;

int a[1007],cnt[2*100000+7];

int main(){
std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;
cin>>n;
for(int i = 1;i<=n;i++){
cin>>a[i];
a[i] ^= a[i-1];
} long long ans = 0;///O(n^4)空间 大概1x10^12>2*10^9
for(int i = 1;i<=n;i++){///向左遍历左区间的右端点i。对于一组相同端点的左区间,一定会被其右端点往后的点作为左端点的右区间遍历匹配,因此每次处理都保留
for(int j = 1;j<=i;j++){///遍历以i为右端点的左区间的左端点
cnt[a[i]^a[j-1]]++;
}
for(int j = i+1;j<=n;j++){///遍历以i+1为左端点的右区间的右端点
ans+=cnt[a[j]^a[i]];
}
}
cout<<ans<<'\n';
return 0;
}

NC14247 Xorto的更多相关文章

  1. Wannafly挑战赛1,2

    做了好久了,今天大佬讲题,好厉害,弱鸡只会几道水题. Treepath 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条路径.路径的起点与终点 ...

随机推荐

  1. 2022.02.21 SA

    2022.02.21 SA 当我年少轻狂时,我曾拥有自由,但我并不明白它的意义.我曾拥有时间,但我没有意识到它的珍贵.我曾拥有爱,但我从未用心去体会.数十年的时间考验后,我终于理解了三者的真谛. 我已 ...

  2. python基础练习题(题目 学习使用auto定义变量的用法)

    day28 --------------------------------------------------------------- 实例042:变量作用域 题目 学习使用auto定义变量的用法 ...

  3. JavaCV的摄像头实战之七:推流(带声音)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<JavaCV的摄像头实战> ...

  4. python 多进程共享全局变量之Manager()

    Manager支持的类型有list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和A ...

  5. 使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群

    bitnami-docker-postgresql 仓库 源码:bitnami-docker-postgresql https://github.com/bitnami/bitnami-docker- ...

  6. R2DBC正式孵化成功,利好Spring Webflux

    2022年4月25日,R2DBC社区宣布具有普遍可用性的1.0.0.RELEASE正式发布. R2DBC致力于为反应式编程 API操作关系型数据库带来规范支持,R2DBC不同于我们熟知的JDBC规范, ...

  7. Linux-文件查找-打包压缩-tar

    1.文件查找工具locate,find 1.1  locate locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进 ...

  8. 推荐 | Linux 思维导图整理(建议收藏)

    一个执着于技术的公众号 作者:小柑 来源:https://www.jianshu.com/p/59f759207862 今天整理了一下收集的 Linux 思维导图.上传的均为高清原图,双击即可查看,也 ...

  9. Atlas2.2.0编译、安装及使用(集成ElasticSearch,导入Hive数据)

    1.编译阶段 组件信息: 组件名称 版本 Atals 2.2.0 HBase 2.2.6 Hive 3.1.2 Hadoop 3.1.1 Kafka 2.11_2.4.1 Zookeeper 3.6. ...

  10. 伪元素选择器,选择器优先级,CSS修改文字属性,CSS修改字体属性,CSS修改其他属性

    伪元素选择器 未使用元素选择器的效果 第一行:伪元素选择器:选择部分内容 第二行:伪元素选择器:选择部分内容 伪元素选择器:选择部分内容 伪元素选择器:选择部分内容 ::selection:选择指定元 ...