• Vasiliy's Multiset CodeForces -706D || 01字典树模板


    就是一个模板

    注意这题有一个要求:有一个额外的0一直保持在集合中

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 const int _LEN=30;
     5 //上限为2^30-1,即二进制最多30位
     6 int lft[40];
     7 namespace Trie
     8 {
     9     int ch[7001000][2],sz[7001000];
    10     int mem;
    11     void insert(int x,int cur)
    12     {
    13         int i;bool t;
    14         for(i=_LEN-1;i>=0;--i)
    15         {
    16             t=x&lft[i];
    17             if(!ch[cur][t])    ch[cur][t]=++mem;
    18             ++sz[cur];cur=ch[cur][t];
    19         }
    20         ++sz[cur];
    21     }
    22     int query(int x,int cur)
    23     {
    24         int i,ans=0;bool t;
    25         for(i=_LEN-1;i>=0;--i)
    26         {
    27             t=x&lft[i];
    28             if(sz[ch[cur][t^1]])    ans|=lft[i],cur=ch[cur][t^1];
    29             else    cur=ch[cur][t];
    30         }
    31         return ans;
    32     }
    33     void erase(int x,int cur)
    34     {
    35         int i;bool t;
    36         for(i=_LEN-1;i>=0;--i)
    37         {
    38             t=x&lft[i];
    39             --sz[cur];cur=ch[cur][t];
    40         }
    41         --sz[cur];
    42     }
    43 };
    44 int root;
    45 char ss[10];
    46 int main()
    47 {
    48     int i,q,x;
    49     lft[0]=1;
    50     for(i=1;i<=_LEN;i++)    lft[i]=lft[i-1]<<1;
    51     root=++Trie::mem;Trie::insert(0,root);
    52     scanf("%d",&q);
    53     while(q--)
    54     {
    55         scanf("%s%d",ss,&x);
    56         if(ss[0]=='+')
    57         {
    58             Trie::insert(x,root);
    59         }
    60         else if(ss[0]=='-')
    61         {
    62             Trie::erase(x,root);
    63         }
    64         else if(ss[0]=='?')
    65         {
    66             printf("%d
    ",Trie::query(x,root));
    67         }
    68     }
    69     return 0;
    70 }
  • 相关阅读:
    Struts2+Spring+Ibatis集成合并
    spring多个定时任务quartz配置
    Quartz作业调度框架
    百度搜索URL参数含义
    代理IP抓取
    解决HttpWebRequest和HtmlAgilityPack采集网页中文乱码问题
    移动端上传头像-相册、拍摄-旋转
    订单倒计时
    css flex布局 实例
    currentTarget与target
  • 原文地址:https://www.cnblogs.com/hehe54321/p/8718645.html
Copyright © 2020-2023  润新知