rt,我在开字典树时不小心开成了 105 也过了,但是需要开 106,就是 ∑∣Si∣ 吧。
#include<bits/stdc++.h>
using namespace std;
int n,m,trie[100001][27],cnt,b[100001];
string s[100001],t[100001];
int getnum(char x){
return x-'a';
}
void insert(string s){
int p=0;
for(int i=0;i<s.size();i++){
int c=getnum(s[i]);
if(!trie[p][c]) trie[p][c]=++cnt;
p=trie[p][c];
}
b[p]++;
}
int query(string s){
int p=0,ans=0;
for(int i=0;i<s.size();i++){
int c=getnum(s[i]);
if(!trie[p][c]) return ans;
p=trie[p][c];
ans+=b[p];
}
return ans;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
insert(s[i]);
}
for(int i=1;i<=m;i++){
cin>>t[i];
cout<<query(t[i])<<endl;
}
}