1039 Course List for Student (25 分)
思路
重点就是不定长vector的使用,减少内存
还有通过哈希表,将name转换为数字
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 40010;
const int M = 26*26*26*10+1;
vector<int>selectcourse[M];
int getID(char a[])
{
int id = 0;
for(int i=0;i<3;i++)
id = id*26 +(a[i]-'A');
id =id*10+ a[3]-'0';
return id;
}
int main(){
char name[5];
int n,k;
cin>>n>>k;
for(int i =0;i<k;i++)
{
int course,x;
scanf("%d%d",&course,&x);
for(int j =0;j<x;j++)
{
scanf("%s",name);
int id = getID(name);
selectcourse[id].push_back(course);
}
}
for(int i =0;i<n;i++)
{
scanf("%s",name);
int id =getID(name);
sort(selectcourse[id].begin(),selectcourse[id].end());
printf("%s %d",name,int(selectcourse[id].size()));
for(int j=0;j<selectcourse[id].size();j++)
printf(" %d",selectcourse[id][j]);
cout<<endl;
}
}