OIer_Hhy @ 2024-09-01 11:28:31
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
char tr[N][128];
int cnt[N],idx,n,q;
string s;
void insert(string s){
int len=s.size(),p=0;
for(int i=0;i<len;i++){
int j=s[i];
if(!tr[p][j]) tr[p][j]=++idx;
p=tr[p][j];
cnt[p]++;
}
}
int query(string s){
int len=s.size(),p=0;
for(int i=0;i<len;i++){
int j=s[i];
if(!tr[p][j]) return 0;
p=tr[p][j];
}
return cnt[p];
}
void solve(){
for(int i=0;i<=idx;i++){
for(int j=0;j<128;j++) tr[i][j]=0;
}
for(int i=0;i<=idx;i++) cnt[i]=0;
idx=0;
cin>>n>>q;
while(n--){
cin>>s;
insert(s);
}
while(q--){
cin>>s;
cout<<query(s)<<'\n';
}
}
int main(){
int t;
cin>>t;
while(t--) solve();
return 0;
}
by OIer_Hhy @ 2024-09-01 11:45:06
sorry,trie 的类型应该是 int,辛苦大佬们帮我调了。
此贴结。
by Small_Traveler @ 2024-10-08 13:32:46
我也因为这个re了