WA求助
查看原帖
WA求助
181437
cyfff楼主2021/1/31 17:10
#include<bits/stdc++.h>
using namespace std;
int n,a[200500],hb[200500],l,r,mx;long long nw;
set<pair<int,int> >b;
int main(){
    scanf("%d",&n);
    for(l=1;l<=n;++l)scanf("%d",&a[l]);
    for(l=1;l<=n;++l)
    for(r=29;r>=0;--r)if(a[l]&(1<<r)){hb[l]=r;break;}
    for(l=1;l<=n;++l)
    for(mx=1<<(hb[l]+1),nw=a[l+1],r=l+2;r<=n;++r){
        if(nw>=mx)break;
        if((a[l]^a[r])==nw)b.insert(make_pair(l,r));
        nw+=a[r];
    }
    for(r=n;r;--r)
    for(mx=1<<(hb[r]+1),nw=a[r-1],l=r-2;l;--l){
        if(nw>=mx)break;
        if((a[l]^a[r])==nw)b.insert(make_pair(l,r));
        nw+=a[l];
    }
    printf("%d",b.size());
    return 0;
}
2021/1/31 17:10
加载中...