P8306,rt
考虑输入
1
1 1
a a
代码会输出0,下附代码
#include <bits/stdc++.h>
using namespace std;
int T,q,n,t[3000005][65],cnt[3000005],tot;
int getnum(char x){
if(x>='A'&&x<='Z') return x-'A';
else if(x>='a'&&x<='z') return x-'a'+26;
else return x-'0'+52;
}
void insert(string str){
int p=0,len=str.length();
for(int i=0;i<len;i++){
int c=getnum(str[i]);
if(!t[p][c]){
t[p][c]=tot;
tot++;
}
p=t[p][c];
cnt[p]++;
}
}
int find(string str){
int p=0,len=str.length();
for(int i=0;i<len;i++){
int c=getnum(str[i]);
if(t[p][c]==0) return 0;
p=t[p][c];
}
return cnt[p];
}
int main(){
cin>>T;
while(T--){
cin>>n>>q;
string s;
for(int i=1;i<=n;i++){
string s;
cin>>s;
insert(s);
}
for(int i=1;i<=q;i++){
cin>>s;
cout<<find(s)<<'\n';
}
for(int i=0;i<=tot;i++){
for(int j=0;j<65;j++){
t[i][j]=0;
}
}
for(int i=0;i<=tot;i++){
cnt[i]=0;
}
tot=0;
}
return 0;
}