B. AGAGA XOOORRR

留下xx或者xxx

x^x=0

xxx^=0^x=x

从左向右异或过去

结果先成为x,然后成为0,最后变成x

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const ll maxn = 2e3+10;
ll n,a[maxn],t;
int main(){
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;++i)cin>>a[i];
        ll tmp=0;
        for(int i=1;i<=n;++i){
            tmp=tmp^a[i]; 
        }
        if(tmp==0){
            cout<<"YES\n";
            continue;
        }
        ll now=0,sta=0;
        for(int i=1;i<=n;++i){
            now=now^a[i];
            if(now==tmp&&sta==0)sta=1;
            if(now==0&&sta==1)sta=2;
            if(now==tmp&&sta==2)sta=3;
        }
        if(sta==3)    cout<<"YES\n";
        else        cout<<"NO\n";
    }
    return 0;
}

 

posted @ 2021-04-22 19:18  PdrEam  阅读(145)  评论(0编辑  收藏  举报