re求条

P8306 【模板】字典树

dg114514 @ 2024-12-02 17:17:46

#include<bits/stdc++.h>
using namespace std;
template<int _l,int _r> class trie{
    #define u t[p][tmp] 
    vector<vector<int>>t;
    vector<int> cnt;
    int l,r,tot;
    public:
    trie(int n):t(n+5,vector<int>(_r-_l+10,0)),l(_l),r(_r),cnt(n+5),tot(0){}
    void insert(const string& s){
        int p=0,tmp;
        for(auto i:s){
            tmp=i-l;
            if(!u)u=++tot;p=u;
            cnt[p]++;
        }
    }
    void clear(){t.clear(),cnt.clear(),tot=0;}
    int find(const string& s){
        int p=0,tmp;
        for(auto i:s){
            tmp=i-l;
            if(!u)return 0;p=u;
        }
        return cnt[p];
    }
};
signed main(){
//  cin.tie(0)->sync_with_stdio(false);
    trie<'0','z'> t(200005);
    int T,n,q;
    cin>>T;
    string s;
    while(T--){
        cin>>n>>q;
        while(n--)cin>>s,t.insert(s);
        while(q--)cin>>s,cout<<t.find(s)<<"\n";
        t.clear(); 
    }
}

|