和和异或和 题解
2025-10-31 20:58:25
发布于:广东
15阅读
0回复
0点赞
这题不是暴力吗(((
注意到 ,且 当且仅当 所有为 的位都不同。
所以区间长度不超过 。
于是就可以暴力了。
#include <iostream>
#include <cstdio>
using namespace std;
int a[200005];
int n;
int main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
int ans = 0;
for(int i = 1; i <= 30; i++){
for(int j = 1; j <= n - i + 1; j++){
int cur1 = 0, cur2 = 0;
for(int k = j; k <= j + i - 1; k++){
cur1 += a[k];
cur2 ^= a[k];
}
if(cur1 == cur2) ans++;
}
}
cout << ans << '\n';
return 0;
}
时间复杂度:。
这里空空如也







有帮助,赞一个