zoukankan      html  css  js  c++  java
  • Trie字典树

    用来查找是否出现某些单词,或者是求最大亦或和

    inline void add(char s[])//插入
    {
        int u=1;
        for(int i=1;i<=ls;i++)
        {
            int v=s[i]-'a'+1;
            if(!ch[u][v])
            {
                ch[u][v]=++cnt;
            }
            u=ch[u][v];
        }
        point[++num]=u;
    }
    inline bool solve(char s[])//查找
    {
        int u=1;
        for(re i=1;i<=ls;i++)
        {
            int v=s[i]-'a'+1;
            if(!ch[u][v])
            return 0;
            u=ch[u][v];
        }
        return 1;
    }
    #include<bits/stdc++.h>//求最大亦或和
    using namespace std;
    int ch[(4*100005)<<5][3],cnt=1;
    long long l[4*100005],r[4*100005];
    inline void add(int x)
    {
        int u=1;
        for(int i=31;i>=0;i--)
        {
            int v=(x&(1<<i))?1:0;
            if(!ch[u][v])
            {
                ch[u][v]=++cnt;
            }
            u=ch[u][v];
        }
    }
    inline long long work(int x)
    {
        int u=1;
        long long ans=0;
        for(int i=31;i>=0;i--)
        {
            int v=(x&(1<<i))?0:1;
            if(ch[u][v])
            {
                ans+=(1<<i);
                u=ch[u][v];
            }
            else
            {
                u=ch[u][!v];
            }
        }
        return ans;
    }
    int n,now=0;
    int x[400005];
    long long bns=0;
    int main()
    {
        scanf("%d",&n);
        add(now);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&x[i]);
            now^=x[i];
            add(now);
            l[i]=max(l[i-1],work(now)); 
        }
        memset(ch,0,sizeof(ch));
        add(now=0);
        for(int i=n;i>=1;i--)
        {
            now^=x[i];
            add(now);
            r[i]=max(r[i+1],work(now));
        }
        for(int i=1;i<=n;i++)
        {
            bns=max(bns,l[i]+r[i+1]);
        }
        printf("%lld",bns);
        return 0;
    }

    https://www.lydsy.com/JudgeOnline/problem.php?id=4260(题目

  • 相关阅读:
    Diocp截图
    [DIOCP视频]-DIOCPFileServer视频
    DIOCP 运作核心探密
    DIOCP-DIOCPv5的处理能力
    【被C折腾系列】用C调DIOCP编码客户端通信
    DIOCP-V5发布
    MyBean通用报表插件介绍
    Amazon
    输出所有大小写字符的组合
    删除最少字符生成Palindrome
  • 原文地址:https://www.cnblogs.com/qyh2003/p/9798697.html
Copyright © 2011-2022 走看看