Xorto

Xorto

https://ac.nowcoder.com/acm/problem/14247

题意

有多少对区间,这对区间数的亦或和为0

思路

记录一个亦或前缀和,枚举i,i将区间分为半部分和右半部分,每次从左半部分和右半部分取一个凑一对。左半部分区间亦或和存在一个数组中。

复杂度

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define db double
#define mp make_pair
#define fi first
#define se second
#define de(a) cout << #a << " = " << a << endl

ll cnt[1000010];
int pre[10010];

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++){
        cin >> pre[i];
        pre[i] ^= pre[i - 1];
    }

    ll ans = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 0; j < i; j++){
            cnt[pre[i] ^ pre[j]]++;
        }
        for(int j = i + 1; j <= n; j++){
            ans += cnt[pre[j] ^ pre[i]];
        }
    }
    cout << ans << endl;

    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
面试官_我太想进步了:混学生会的,难怪简历这么水
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务