版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目大意:输入课程编号及参加学生,输出学生及其参加课程。
据说用字符串与cin会超时……将字符串哈希化,在输入课程下的学生时将该课程压入哈希化后学生编号的vector中,并在输出前排序;
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int getnum(string s) {
int id=0;
for (int i = 0; i < 3; i++) {
id = id * 26 + s[i] - 'A';
}
id = id * 10 + s[3] - '0';
return id;
}
const int maxn = 26 * 26 * 26 * 10 + 10;
vector<int> v[maxn];
int main() {
int n, k, no, num, id;
scanf("%d %d", &n, &k);
for (int i = 0; i < k; i++) {
char name[9];
scanf("%d%d", &no, &num);
for (int j = 0; j < num; j++) {
scanf("%s", name);
id = getnum(name);
v[id].push_back(no);
}
}
for (int i = 0; i < n; i++) {
char name[9];
scanf("%s", name);
int id = getnum(name);
sort(v[id].begin(), v[id].end());
printf("%s %d", name, v[id].size());
for (int j = 0; j < v[id].size(); j++) {
printf(" %d", v[id][j]);
}
printf("\n");
}
return 0;
}```