1047 Student List for Course (25 分)

Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course list of each student, you are supposed to output the student name lists of all the courses.

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 numbers: N (≤40,000), the total number of students, and K (≤2,500), the total number of courses. Then N lines follow, each contains a student's name (3 capital English letters plus a one-digit number), a positive number C (≤20) which is the number of courses that this student has registered, and then followed by C course numbers. For the sake of simplicity, the courses are numbered from 1 to K.

Output Specification:

For each test case, print the student name lists of all the courses in increasing order of the course numbers. For each course, first print in one line the course number and the number of registered students, separated by a space. Then output the students' names in alphabetical order. Each name occupies a line.

Sample Input:

10 5
ZOE1 2 4 5
ANN0 3 5 2 1
BOB5 5 3 4 2 1 5
JOE4 1 2
JAY9 4 1 2 5 4
FRA8 3 4 2 5
DON2 2 4 5
AMY7 1 5
KAT3 3 5 4 2
LOR6 4 2 4 1 5

Sample Output:

1 4
ANN0
BOB5
JAY9
LOR6
2 7
ANN0
BOB5
FRA8
JAY9
JOE4
KAT3
LOR6
3 1
BOB5
4 7
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1
5 9
AMY7
ANN0
BOB5
DON2
FRA8
JAY9
KAT3
LOR6
ZOE1

题目大意:给出学生总数和课程总数,输入是学生姓名+报名课程编号(从1开始);要求输出课程编号,课程报名总人数和学生姓名。

//感觉不难,在牛客网上通过了,但是在PAT上测试点1没通过,得了22分,以下:

#include <iostream>
#include <map>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n,m,k;
cin>>n>>m;
map<int,vector<string>> mp;
string name;
for(int i=;i<n;i++){
cin>>name>>k;
int temp;
for(int j=;j<k;j++){
cin>>temp;
mp[temp].push_back(name);//可以直接这样放进去的。
}
}
for(auto it=mp.begin();it!=mp.end();it++){
vector<string> name=it->second;
cout<<it->first<<" "<<name.size()<<"\n";
sort(name.begin(),name.end());
for(int i=;i<name.size();i++){
cout<<name[i]<<'\n';
}
}
return ;
}

//真的不知道是哪里出错了,就先这样吧,不是超时的问题,搜索中发现,以前的运行时间限制分别是200s,400s,现在已经到了1s,所以使用String也是没问题的。

//知道了,是对于没人选的课,应该输出课程编号和0,但是我什么都没输出:

因为我是用map做的啊,它根本映射不到,所以所以这种做法是错误的,牛客网上的用也太水了吧。

#include <iostream>
#include <map>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n,m,k;
cin>>n>>m;
map<int,vector<string>> mp;
string name;
for(int i=;i<n;i++){
cin>>name>>k;
int temp;
for(int j=;j<k;j++){
cin>>temp;
mp[temp].push_back(name);//可以直接这样放进去的。
}
}
//来个检测
for(int i=;i<=m;i++){
if(mp.count(i)==){
vector<string> vt;
mp[i]=vt;//让它等于一个空向量
}
} for(auto it=mp.begin();it!=mp.end();it++){
vector<string> name=it->second;
cout<<it->first<<" "<<name.size()<<"\n";
sort(name.begin(),name.end());
for(int i=;i<name.size();i++){
cout<<name[i]<<'\n';
}
}
return ;
}

//加了个检测,AC了,但总感觉这样很。。。不要Face。。

PAT 1047 Student List for Course[一般]的更多相关文章

  1. PAT 1047. Student List for Course

    Zhejiang University has 40000 students and provides 2500 courses. Now given the registered course li ...

  2. PAT 解题报告 1047. Student List for Course (25)

    1047. Student List for Course (25) Zhejiang University has 40000 students and provides 2500 courses. ...

  3. PAT 甲级 1047 Student List for Course (25 分)(cout超时,string scanf printf注意点,字符串哈希反哈希)

    1047 Student List for Course (25 分)   Zhejiang University has 40,000 students and provides 2,500 cou ...

  4. 1047 Student List for Course ——PAT甲级真题

    1047 Student List for Course Zhejiang University has 40,000 students and provides 2,500 courses. Now ...

  5. 浙大 pat 1047题解

    1047. Student List for Course (25) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  6. PAT 甲级 1047 Student List for Course

    https://pintia.cn/problem-sets/994805342720868352/problems/994805433955368960 Zhejiang University ha ...

  7. PAT (Advanced Level) 1047. Student List for Course (25)

    简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...

  8. PAT甲级题解-1047. Student List for Course (25)-排序

    一开始是建立了course[2501][40001]数组,存储每节课的学生编号然后for循环两层输出,但这样复杂度为O(2500*40000),也很明显导致最后时间超时后来发现最多40000学生,每个 ...

  9. 【PAT甲级】1047 Student List for Course (25 分)

    题意: 输入两个正整数N和K(N<=40000,K<=2500),接下来输入N行,每行包括一个学生的名字和所选课程的门数,接着输入每门所选课程的序号.输出每门课程有多少学生选择并按字典序输 ...

随机推荐

  1. 推广Facebook技巧

    1.创建有吸引力的内容发布多样化的内容,包括图片,状态更新,视频,投票等.可以问你的粉丝一些问题让他们提供答案.这些内容不仅你的粉丝可以看到,它们还将会出现在你粉丝的个人动态栏,所以他们的朋友也是可以 ...

  2. impala+kudu

    [impala建表]kudu的表必须有主键,作为分区的字段需排在其他字段前面. [range分区](不推荐)CREATE TABLE KUDU_WATER_HISTORY ( id STRING, y ...

  3. ubuntu16.0.4 update git

    Ubuntu 16.04 comes with Git 2.7.x, which is a little old now. As versions 2.8 & 2.9 are not part ...

  4. BT下载原理分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. BitTorrent协议. BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload, ...

  5. 玩转Win10的45个快捷键

    1Win10快捷键大全(第一部分) Win10发布已经快两个星期了,各项新功能也让小伙伴们兴奋不已.和之前系统一样,Win10也加入了很多经典的快捷键,同时还加入了全新触控手势.今天小编就将所有的Wi ...

  6. logback参考配置

    logback配置 <?xml version="1.0" encoding="UTF-8"?> <configuration> < ...

  7. 【Mac + Python + Selenium】之PyCharm配置Selenium自动化

    一.安装PyCharm 1.下载地址: Pycharm编辑器官网下载地址 2.安装完成之后打开,一路下去点击,直到填写注册码,参考: <[转载][Pycharm编辑器破解步骤]之idea和Pyc ...

  8. redis info命令中各个参数的含义

    Redis 性能调优相关笔记 2016年09月25日 15:42:04 WenCoding 阅读数:4844更多 个人分类: Redis数据库   info可以使用info [类别]输出指定类别内容i ...

  9. css3兼容代码

    1. 渐变:.gradient{ width:300px; height:150px; filter:alpha(opacity=100 finishopacity=50 style=1 startx ...

  10. 第一百六十一节,封装库--JavaScript,完整封装库文件

    封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象, ...