#include <bits/stdc++.h>
using namespace std;
const int N = 3e6 + 5;
int q, n, t[N][65], cnt[N],id;
char s[N];
int getnum(char x) {
if (x >= 'A' and x <= 'Z') return x - 'A';
else if (x >= 'a' and x <= 'z') return x - 'a' + 26;
else return x - '0' + 52;
}
void insert(char str[]) {
int p = 0, len = strlen(str);
for (int i = 0; i < len; i++) {
int c = getnum(str[i]);
if (!t[p][c]) t[p][c] = ++id;
p = t[p][c];
cnt[p]++;
}
}
int find(char str[]) {
int p = 0, len = strlen(str);
for (int i = 0; i < len; i++) {
int c = getnum(str[i]);
if (!t[p][c]) return 0;
p = t[p][c];
}
return cnt[p];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while (T--) {
for (int i = 0; i < id; i++) for (int j = 0; j <= 122; j++) t[i][j] = 0;
for (int i = 0; i < id; i++) cnt[i] = 0;
id = 0;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> s;
insert(s);
}
for (int i = 1; i <= n; i++) {
cin >> s;
cout << find(s) << "\n";
}
}
return 0;
}
以上的错误代码交上去仍能AC 错因在于第 49 行 for 循环内应为循环 q 次 因此建议加强数据 @kkksc03 @一扶苏一