题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805433955368960
题目分析:
使用一个vector<string> course[2510]记录相应课程的学生即可。本题开始给出是建立结构体。略微麻烦一点,重点是,输出该课程的学生姓名使用cout时,将超时。改用printf("%s\n",(*it).c_str());
参考代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct cour{
vector <string> stu;
int num = 0;
}ans[2510];
bool cmp(string a, string b){
return a < b;
}
int N, K;
int main()
{
cin >> N >> K;
for(int i = 0; i < N; i++){
string name;
int cnt,seq;
cin >> name >> cnt;
for(int j = 0; j < cnt; j++){
cin >> seq;
ans[seq].stu.push_back(name);
ans[seq].num++;
}
}
for(int i = 1; i <= K; i++){
printf("%d %d\n",i, ans[i].num);
sort(ans[i].stu.begin(),ans[i].stu.end(),cmp); //若使用cout输出,最后一个测试点超时
/*for(int j = 0; j < ans[i].num; j++)
cout << ans[i].stu[j] << endl;*/
for(auto it = ans[i].stu.begin(); it != ans[i].stu.end(); ++it) {
printf("%s\n", (*it).c_str());
}
}
return 0;
}