PAT 1039 Course List for Student (25分)

这道题在读题的时候就注意到它对学生的命名方式特殊,而不是随意一个string。

于是采用正常的思路,使用map和string做出来后,会因为最后一个测试用例数据庞大而超时。

还不能用cin这种比较慢的输入方式。

但是最后一个测试用例就只有两分,如果这是考试,我会果断放弃这两分不要了。

下面就把我用map和string和priority_queue的代码放上来,最后一例会超时。

#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
using namespace std;
map<string,priority_queue<int, vector<int>, greater<>>> m;
int n,k;
int main(){
    cin>>n>>k;
    for(int i=0;i<k;i++){
        int idx,num;
        cin>>idx>>num;
        for(int j=0;j<num;j++){
            string tmp;
            cin>>tmp;
            m[tmp].push(idx);
        }
    }
    for(int i=0;i<n;i++){
        string str;
        cin>>str;
        cout<<str<<" "<<m[str].size();
        while(!m[str].empty()){
            cout<<" "<<m[str].top();
            m[str].pop();
        }
        if(i<n-1)cout<<endl;
    }
    return 0;
}

 

posted @ 2020-08-11 20:11  uy9ko  阅读(98)  评论(0)    收藏  举报