牛客Xorto

Xorto

题目描述

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

输入描述:

复制代码
第一行一个数n表示数组长度;
第二行n个整数表示数组;
1<=n<=1000,0<=数组元素<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])

思路:前缀和难题

代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[1005],mp[1<<17];//开大点
int main(){
    int n;cin>>n;
    long long cnt=0;
    for(int i=1;i<=n;++i){cin>>a[i];a[i]^=a[i-1];}//异或前缀和
    for(int i=1;i<=n;++i){//作为右端点
       for(int j=0;j<i;j++)mp[a[j]^a[i]]++;//枚举左区间,将左边异或和填入
        for(int j=i+1;j<=n;++j)cnt+=mp[a[i]^a[j]];//查看右边异或和是否有,有就加上去
    }
    printf("%lld",cnt);
}
相关推荐
数研小生4 小时前
构建命令行单词记忆工具:JSON 词库与艾宾浩斯复习算法的完美结合
算法·json
芒克芒克4 小时前
LeetCode 题解:除自身以外数组的乘积
算法·leetcode
Python 老手5 小时前
Python while 循环 极简核心讲解
java·python·算法
@Aurora.5 小时前
优选算法【专题九:哈希表】
算法·哈希算法·散列表
爱看科技5 小时前
微美全息(NASDAQ:WIMI)研究拜占庭容错联邦学习算法,数据安全与隐私保护的双重保障
算法
qq_417129255 小时前
C++中的桥接模式变体
开发语言·c++·算法
Hello World . .6 小时前
数据结构:队列
c语言·开发语言·数据结构·vim
YuTaoShao6 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
吴维炜7 小时前
「Python算法」计费引擎系统SKILL.md
python·算法·agent·skill.md·vb coding
Σίσυφος19008 小时前
PCL Point-to-Point ICP详解
人工智能·算法