#include "iostream"
using namespace std;
const int maxn = 1000010, maxm = 500010;
int n, m;
int son[maxm][26], cnt[maxn], idx;
char str[maxn];
void insert() {
int p = 0;
for(int i = 0; str[i]; ++i) {
int &s = son[p][str[i] - 'a'];
if(!s) s = ++idx;
p = s;
}
cnt[p]++;
}
int query() {
int p = 0, res = 0;
for(int i = 0; str[i]; ++i) {
int &s = son[p][str[i] - 'a'];
if(!s) break;
p = s;
res += cnt[p];
}
return res;
}
int main() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) {
scanf("%s", str);
insert();
}
for(int i = 1; i <= m; ++i) {
scanf("%s", str);
cout << query() << endl;
}
return 0;
}
trie前缀模板
最新推荐文章于 2024-04-20 00:05:39 发布