学习了一下哈希散列
其实就是找对应的关系
不过对于为什么是 *26 还有点迷茫
相关文章已收藏
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, k;
int x, y;
const int maxn = 26 * 26 *26 *10 +10;
vector<int> arr[maxn];
int getid(char a[]){
int id = 0;
for(int i=0; i<3; i++)
id = id*26 + a[i] - 'A';
id = id*10 + a[3] - '0';
return id;
}
int main(){
scanf("%d %d",&n, &k);
for(int i=0; i<k; i++){
char a[5];
scanf("%d %d",&x, &y);
for(int j=0; j<y; j++){
scanf("%s",&a);
int id = getid(a);
arr[id].push_back(x);
}
}
for(int i=0; i < n; i++){
char b[5];
scanf("%s",b);
int id = getid(b);
sort(arr[id].begin(),arr[id].end());
printf("%s %lu", b, arr[id].size());
for(int j=0; j<arr[id].size(); j++)
printf(" %d", arr[id][j]);
printf("\n");
}
return 0;
}