数据量大的时候用string会使最后一个测试点超时。
#include<cstdio>
#include<iostream>
#include<vector>
#include <algorithm>
#include<cstring>
using namespace std;
const int maxn=40010;
const int maxc=2510;
vector<string>a[2500];
char name[maxn][5];
vector<int>course[maxc];
bool cmp1(int a,int b)
{
return strcmp(name[a],name[b])<0;
}
int main()
{
int n,k;
cin>>n>>k;
for (int i=0;i<n;i++)
{
int num;
scanf("%s %d",name[i],&num);
for (int j=0;j<num;j++)
{
int temp;
scanf("%d",&temp);
course[temp].push_back(i);
}
}
for (int i=1;i<=k;i++)
{
printf("%d %d\n",i,course[i].size());
sort(course[i].begin(),course[i].end(),cmp1);
for (int j=0;j<course[i].size();j++)
{
printf("%s\n",name[course[i][j]]);
}
}
}
本文探讨了在处理大量数据时使用C++的技巧,特别是在字符串操作和排序方面。通过实例代码展示了如何读取和组织数据,以及如何利用比较函数进行有效排序。

1058

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



