本文主要是介绍1039. Course List for Student 解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
直接用string会超时 名字一定是三位字母+一个数字 所以转成哈希表 来处理 会快很多。
#include <iostream>
#include <vector>
#include <algorithm>#define MAX 26*26*26*10using namespace std;int N, K;
vector <int> name[MAX];int c2i(char c) { //char2intif( c >='A' && c <='Z')return int( c - 'A');if (c >= '0' && c <= '9')return int(c - '0');return -1;
}int Hash(char * c) {return (((c2i(c[0]) * 26 + c2i(c[1])) * 26 + c2i(c[2]))) * 10 + c2i(c[3]);
}bool cmp(int n1, int n2) {return n1 < n2;
}int main() {cin >> N >> K;char c[4];for (int i = 0; i < K; i++) {int ClaNum, StuN;cin >> ClaNum >> StuN;for (int j = 0; j < StuN; j++) {scanf("%s", c);int na = Hash(c);name[na].push_back(ClaNum);}}for (int i = 0; i < N; i++) {scanf("%s", c);printf("%s ", c);int na = Hash(c);printf("%d", name[na].size());if (name[na].size() != 0){sort(name[na].begin(), name[na].end(), cmp);for (int j = 0; j < name[na].size(); j++) {printf(" %d", name[na][j]);}}printf("\n");}return 0;
}
这篇关于1039. Course List for Student 解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!