最开始用map,最后一个测试点勉勉强强没超时:384ms;用了unordered——map情况稍微好点:271ms。
另外如果不排序的话测试点2、5会过不去,我在这两个点学么了半天也没闹明白为啥不排序过不去(来自菜鸡的大写问号)……

#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std;
unordered_map<string, vector<int>>stu;
int main(void)
{
int N, K, ID, n;
char name[5];
scanf("%d %d", &N, &K);
while(K--){
scanf("%d %d", &ID, &n);
for (int j = 0; j < n; j++) {
scanf("%s", name);
stu[name].push_back(ID);
}
}
while(N--){
scanf("%s", name);
printf("%s %d", name, stu[name].size());
sort(stu[name].begin(), stu[name].end());
for (auto j:stu[name]) {
printf(" %d", j);
}
printf("\n");
}
return 0;
}

本文分享了作者在使用C++进行编程竞赛时的经验,对比了map和unordered_map的性能差异,发现后者在某些情况下能显著提高速度。此外,文章还强调了数据排序对于通过特定测试点的重要性,尽管其原因并未完全解释清楚。

7万+

被折叠的 条评论
为什么被折叠?



