codeforces 252 A. Little Xor

问最大的区间异或和

看到n<=100开心n3了;

但有一个性质可以把降到n2

ai^ai+1^ai+2^ai+3^ai+4...aj

==s(i-1)^sj;

求一遍前缀和再枚举区间即可

关于异或有一些很神奇的性质,cf的某道c题就是以这个为基础开脑洞的。

即x^0=x;

x^x=0;

x^x^x=x;

...

那么对于异或和我们可以搞一些玄学合并。。

----

 

虽然也不知道第一次写的哪里挂掉了..

#include<bits/stdc++.h>
using namespace std;
long long a[200];
int main( )
{
    int n;
    cin>>n;
 
//
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    long long maxn=-1;
    
    for(int l=1;l<=n;l++)
     {
        //long long tmp=a[l];
        //maxn=max(maxn,tmp);
      for(int r=l;r<=n;r++)
     {  long long tmp=a[l];
         for(int i=l+1;i<=r;i++)
         {
             tmp^=a[i];
        }
        maxn=max(maxn,tmp);
     }
     
     }
    cout<<maxn;
}

 

posted @ 2021-10-09 15:34  liyishui  阅读(106)  评论(0编辑  收藏  举报