• bzoj4260 Codechef REBXOR


    题目描述:

     题解:
    Trie树。

    从左向右扫一遍,然后从右向左扫一遍。

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define N 400050
    #define M 31*N
    inline int rd()
    {
        int f=1,c=0;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){c=10*c+ch-'0';ch=getchar();}
        return f*c;
    }
    int n,p[N];
    int l[N],r[N];
    struct Trie
    {
        int ch[M][2],siz[M],tot;
        void insert(int x)
        {
            int u=0;
            for(int i=29;i>=0;i--)
            {
                int k = (x>>i)&1;
                if(!ch[u][k])ch[u][k]=++tot;
                u=ch[u][k];siz[u]++;
            }
        }
        int query(int x)
        {
            int u = 0,ret = 0;
            for(int i=29;i>=0;i--)
            {
                int k = (x>>i)&1;
                if(siz[ch[u][!k]])
                {
                    ret|=(1<<i);
                    u=ch[u][!k];
                }else if(siz[ch[u][k]])
                {
                    u=ch[u][k];
                }else break;
            }
            return ret;
        }
        void init()
        {
            for(int i=0;i<=tot;i++)
            {
                ch[i][0]=ch[i][1]=siz[i]=0;
            }
            tot=0;
        }
    }tr;
    int main()
    {
        n=rd();
        for(int i=1;i<=n;i++)p[i]=rd();
        for(int i=1;i<=n;i++)
        {
            l[i]=tr.query(p[i]);
            tr.insert(p[i]);
        }
        for(int i=n;i>=1;i--)
        {
            r[i]=max(r[i+1],tr.query(p[i]));
            tr.insert(p[i]);
        }
        int ans = 0;
        for(int i=1;i<n;i++)ans=max(ans,l[i]+r[i+1]);
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    给Apache增加SSI支持(shtml的奥秘)
    Raphael实现商品来源去向图
    有趣的居中方式
    oc-基本语法
    APMServ 配置记录
    解决Mac Chrome打开HTTPS证书错误问题
    JavaScript生成GUID的算法
    Backbone模型
    利用apply和arguments复用方法
    软件复用的几种方式
  • 原文地址:https://www.cnblogs.com/LiGuanlin1124/p/10024048.html
Copyright © 2020-2023  润新知