zoukankan      html  css  js  c++  java
  • BZOJ 4260 trie树

    思路:
    搞一个前缀异或和

    一次从左往右 另一次从右往左 异或最大值

    用字典树搞一搞

    //By SiriusRen
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define N 400500
    int n,a[N],cnt=1,ch[N*20][2],sum[N],lmax[N],rmax[N],ans;bool f;
    void insert(int x){
        int now=1;
        for(int i=30;~i;i--){
            f=x&(1<<i);
            if(!ch[now][f])ch[now][f]=++cnt;
            now=ch[now][f];
        }
    }
    int query(int x){
        int now=1,temp=0;
        for(int i=30;~i;i--){
            f=x&(1<<i);
            if(ch[now][!f])temp+=(1<<i),now=ch[now][!f];
            else now=ch[now][f];
        }return temp;
    }
    int main(){
        scanf("%d",&n);
        insert(0);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            sum[i]=sum[i-1]^a[i];
            lmax[i]=max(lmax[i-1],query(sum[i]));
            insert(sum[i]);
        }
        cnt=1,memset(ch,0,sizeof(ch));
        for(int i=n;i;i--){
            sum[i]=sum[i+1]^a[i];
            rmax[i]=max(rmax[i+1],query(sum[i]));
            ans=max(ans,rmax[i+1]+lmax[i]);
            insert(sum[i]);
        }
        printf("%d
    ",ans);
    }

    这里写图片描述

  • 相关阅读:
    简单SSO(Single signon)的另类实现方式,钩子技术
    URL
    [恢]hdu 1287
    [恢]hdu 1220
    [恢]hdu 1015
    [恢]hdu 2095
    [恢]hdu 1862
    HDOJ 300!
    [恢]hdu 1029
    [恢]hdu 1016
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532086.html
Copyright © 2011-2022 走看看