zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    10.异常
    9.1 oop习题集合
    9.抽象类和接口
    8.oop-多态
    AngularJs学习笔记二
    浅谈如何坚持计划
    妙味课堂——JavaScript基础课程笔记
    前端学习-试卷
    jquery实战
    boost any
  • 原文地址:https://www.cnblogs.com/hehe54321/p/8718645.html
Copyright © 2011-2022 走看看