zoukankan      html  css  js  c++  java
  • BZOJ 3261 最大异或和

    可持久化trie。

    一个重要的思想是前缀和。

    然后SB错误调了一晚上。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 600500
    using namespace std;
    int n,m,x,y,z,tot=0,tree[maxn*25][3],sum[maxn*25],root[maxn];
    int a[maxn],b[maxn],bin[30];
    char type[4];
    void gettable()
    {
        bin[0]=1;
        for (int i=1;i<=24;i++)
            bin[i]=bin[i-1]<<1;
    }
    void insert(int bitt,int last,int &now,int x)
    {
        now=++tot;
        tree[now][0]=tree[last][0];tree[now][1]=tree[last][1];
        sum[now]=sum[last]+1;
        if (bitt==-1) return;
        int tmp=x&bin[bitt];tmp>>=bitt;
        insert(bitt-1,tree[last][tmp],tree[now][tmp],x);
    }
    int query(int bitt,int last,int now,int x)
    {
        if (bitt==-1) return 0;
        int tmp=x&bin[bitt];tmp>>=bitt;
        if (sum[tree[now][tmp^1]]-sum[tree[last][tmp^1]])
            return query(bitt-1,tree[last][tmp^1],tree[now][tmp^1],x)+bin[bitt];
        else return query(bitt-1,tree[last][tmp],tree[now][tmp],x);
    }
    void work1()
    {
        n++;
        scanf("%d",&x);
        a[n]=x;b[n]=b[n-1]^x;
        insert(23,root[n-1],root[n],b[n]);
    }
    void work2()
    {
        scanf("%d%d%d",&x,&y,&z);
        printf("%d
    ",query(23,root[x-1],root[y],b[n]^z));
    }
    int main()
    {
        gettable();
        scanf("%d%d",&n,&m);
        n++;a[1]=0;b[1]=0;
        for (int i=2;i<=n;i++)
        {
            scanf("%d",&a[i]);
            b[i]=b[i-1]^a[i];
        }    
        for (int i=1;i<=n;i++)
            insert(23,root[i-1],root[i],b[i]);
        for (int i=1;i<=m;i++)
        {
            scanf("%s",type);
            if (type[0]=='A') work1();
            else work2();
        }
        return 0;
    }
  • 相关阅读:
    fiddler工具窗口功能介绍
    Fiddler导出jmx格式实现方法
    Fiddler抓包时一直请求:http://clients1.google.com:443
    内置函数的使用
    python中操作excel、ddt、config、logging方法
    Pycharm 将代码上传到GitHub
    unittest框架-优化一【变量参数化】
    excel的读取
    ddt数据驱动
    selenium中的js和jquery的相关用法
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5535855.html
Copyright © 2011-2022 走看看