Think:
1知识点:桶思想,字符串处理
2反思:多思考,寻找题目特点,进而选择解题方法
以下为Accepted代码——78ms
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int bk[5014], vis[1000000];
int red[44] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};
int tra(char *st);
int main(){
int T, n, m, i, num;
char st[14];
scanf("%d", &T);
while(T--){
scanf("%d %d", &n, &m);
for(i = 1; i <= n; i++)
scanf("%d", &bk[i]);
getchar();
memset(vis, 0, sizeof(vis));
for(i = 1; i <= m; i++){
scanf("%s", st);
num = tra(st);
vis[num]++;
}
for(i = 1; i <= n; i++)
printf("%d\n", vis[bk[i]]);
}
return 0;
}
int tra(char *st){
int i, cnt, sum;
int len = strlen(st);
sum = 0;
for(i = 0; i < len; i++){
cnt = st[i] - 'a';
sum = sum*10 + red[cnt];
}
return sum;
}