NC14247 Xorto
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的更多相关文章
- Wannafly挑战赛1,2
做了好久了,今天大佬讲题,好厉害,弱鸡只会几道水题. Treepath 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条路径.路径的起点与终点 ...
随机推荐
- Promise的then和catch如何影响状态的变化
记住两句话: 1.then正常返回resolved,里面有报错返回reject 1 const p1 = Promise.resolve().then(()=>{ 2 console.log(1 ...
- JavaWeb和WebGIS学习笔记(五)——使用OpenLayers显示地图
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- 如何在代码层面提供CPU分支预测效率
关于分支预测的基本概念和详细算法可以参考我之前写的知乎回答,基本概念不再阐述了~~ https://www.zhihu.com/question/486239354/answer/2410692045 ...
- XCTF练习题---WEB---command_execution
XCTF练习题---WEB---command_execution flag:cyberpeace{69383c056080bd6cd649578894d1d377} 解题步骤: 1.观察题目,打开场 ...
- ASP.NET视图视图表单验证
视图表单验证 初始化项目 新建一个ASP.NET MVC的项目 新建游戏用户类: public class StemUsers { public int id { get; set; } public ...
- 神经网络 CNN 名词解释
隐藏层 不是输入或输出层的所有层都称为隐藏层. 激活和池化都没有权重 使层与操作区分开的原因在于层具有权重.由于池操作和激活功能没有权重,因此我们将它们称为操作,并将其视为已添加到层操作集合中. 例如 ...
- Docker从入门到放弃(1) Docker简介与安装
目录 一.Docker简介 1.Docker是什么: 2.为什么有docke的出现: 3.docker与传统容器的区别: 4.docker基本组成 5.docker工作原理: 二.Docker安装 ...
- 一文看懂二层接口、三层接口、PVID及VLANIF
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 文章来源:朱仕耿个人博客 一位同事问了个关于二层和三层端口的概念及区分,以及关于VLANIF. ...
- IIS项目部署和发布
VS2019如何把项目部署和发布 这里演示:通过IIS文件publish的方式部署到Windows本地服务器上 第一步(安装IIS) 1.在自己电脑上搜索Windows功能里的[启用或关闭Window ...
- input 相关
1.label 标签 for 属性同 input 标签 id 属性联系之一