PAT 1039 Course List for Student


这一题的意思是有N个学生,K个课程,给出每个课程对应的学生数和学生名称,

然后给出N个询问,每一个询问要求输出学生对应有多少个课程,每一个课程的编号是多少,注意按顺序输出。

模拟即可

cpp 复制代码
#include <iostream>
#include <limits.h>
#include <cstring>
#include <queue>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
using namespace std;
int N;//学生数量 
int K;//课程数量 
int index1;//课程编号 
int ni;//登记学生的数量 
unordered_map<string,vector<int>> mp;
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>N>>K;
    for(int i=0;i<K;i++)
	{
	  cin>>index1>>ni;
	  for(int j=0;j<ni;j++)
	  {
	  	string s;
	  	cin>>s;
	    mp[s].push_back(index1);
	  }
	} 
	
	
	for(int i=0;i<N;i++)
	{
		string s;
		cin>>s;
		cout<<s<<" ";
		if(mp[s].size()==0)
		{
			cout<<"0"<<endl;
			continue;
		}
		else
		{
			cout<<mp[s].size();
			 sort(mp[s].begin(), mp[s].end());
		}
		
		for(int j=0;j<mp[s].size();j++)
		{
		   cout<<" "<<mp[s][j];	
		}
		cout<<endl;
	}

	return 0;
 } 

注意排序

cpp 复制代码
sort(mp[s].begin(), mp[s].end());

最后注意PAT常见的输出规则,结尾不能有空格。