1039 Course List for Student (25point(s)) Easy only once
基本思想:
水题,用map可能会超标,范例代码和自己思想类似;
关键点:
无;
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#include<string>
#include<math.h>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
using namespace std;
int n, k;
const int maxn = 500000;
vector<int> vec[maxn];
vector<string>query;
int change(string s) {
int index = 0;
for (int i = 0; i < 4; i++) {
if (i == 3) {
index = index * 26 + (s[i] - '0');
}
else {
index = index * 26 + (s[i] - 'A');
}
}
return index;
}
int main() {
cin >> n >> k;
int a, b;
string s;
for (int i = 0; i < k; i++) {
cin >> a >> b;
for (int j = 0; j < b; j++) {
cin >> s;
int index = change(s);
vec[index].push_back(a);
}
}
for (int i = 0; i < maxn; i++) {
if (vec[i].size() != 0) {
sort(vec[i].begin(), vec[i].end());
}
}
while (cin >> s) {
query.push_back(s);
}
for (int i = 0; i < query.size(); i++) {
cout << query[i];
int index = change(query[i]);
cout << " " << vec[index].size();
for (int j = 0; j < vec[index].size(); j++) {
cout<<" " << vec[index][j];
}
cout << endl;
}
return 0;
}

浙公网安备 33010602011771号