基本思想:
水题,用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; }