社区讨论
N^2 但是通过了民间数据?
P14359[CSP-J 2025] 异或和参与者 8已保存回复 16
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 16 条
- 当前快照
- 1 份
- 快照标识符
- @mhiyn0tt
- 此快照首次捕获于
- 2025/11/03 17:51 4 个月前
- 此快照最后确认于
- 2025/11/18 11:08 4 个月前
CPP
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=5e5;
int a[maxn+5],sum[maxn+5],xor_number=0;
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++){
scanf("%d",&a[i]);
sum[i]=sum[i-1]^a[i];
}
int ans=0;
for(int i=1; i<=n; i++){
sum[i]^=xor_number;
if(sum[i]==k){
ans++;
xor_number^=k;
sum[i]=-1;
}
else{
for(int j=i-1; j>=0 && sum[j]!=-1; j--){
if((sum[j]^sum[i])==k){
ans++;
xor_number^=sum[i];
sum[i]=-1;
break;
}
}
}
}
cout<<ans;
return 0;
}
考场上错误地把复杂度算成了 ,但后来发现好像是 。然而通过了民间数据,那么是数据太弱了还是我复杂度算错了?
回复
共 16 条回复,欢迎继续交流。
正在加载回复...