思路
用map水一下就过去了
代码
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
const int N=10010;
map<int,int> mp;
vector<int> v;
int a[30] = {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 main(){
int T;
cin >> T;
while(T--){
mp.clear();
v.clear();
int n,m;
cin >> n >> m;
for(int i=0;i<n;i++){
int x;
cin >> x;
v.push_back(x);
mp[x]=0;
}
for(int i=0;i<m;i++){
char s[7];
cin >> s;
int t=0;
int len=strlen(s);
for(int i=0;i<len;i++){
t=t*10+a[s[i]-'a'];
}
if(mp.count(t))mp[t]++;
}
for(int i=0;i<n;i++){
cout << mp[v[i]] << "\n";
}
}