【板子】01异或树

//Copyright yeyou26
#include<bits/stdc++.h>
using namespace std;

const int N = 11145;

int t[N][150];
int idx;
int cnt[N];

int n,m,t[N][150],idx,cnt[N]

int trans(char c)
{
    return c^64;
}

void Insert(string s)
{
    int p=0;
    for(int i=0;s[i];i++)
    {
        int ch=trans(s[i]);
        if(!t[p][ch])
        {
            t[p][ch]=++idx;
        }
        p=t[p][ch];
    }
    cnt[p]++;
}

int Query(string s)
{
    int p=0;
    for(int i=0;s[i];i++)
    {
        int ch=trans(s[i]);
        if(!t[p][ch])
        {
            return 0;
        }
        else
        {
            p=t[p][ch];
        }
    }
    return cnt[p];
}
posted @ 2024-01-26 20:56  yeyou26  阅读(28)  评论(0编辑  收藏  举报