博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT甲级——A1047 Student List for Course
阅读量:4540 次
发布时间:2019-06-08

本文共 2356 字,大约阅读时间需要 7 分钟。

 

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 (≤), the total number of students, and K (≤), 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 (≤) 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 5ZOE1 2 4 5ANN0 3 5 2 1BOB5 5 3 4 2 1 5JOE4 1 2JAY9 4 1 2 5 4FRA8 3 4 2 5DON2 2 4 5AMY7 1 5KAT3 3 5 4 2LOR6 4 2 4 1 5

Sample Output:

1 4ANN0BOB5JAY9LOR62 7ANN0BOB5FRA8JAY9JOE4KAT3LOR63 1BOB54 7BOB5DON2FRA8JAY9KAT3LOR6ZOE15 9AMY7ANN0BOB5DON2FRA8JAY9KAT3LOR6ZOE1
1 #include 
2 #include
3 #include
4 #include
5 //题目不难,不过数据量很大,很容易超时。可以定义一个string数组name按读入顺序存储读取的名字字符串,然后定义一个长度为K + 1的vector
的数组course,其数组下标存储课程号,数组元素存储选修该课程的学生的名字在name中的下标。在输出时对course中的数组元素按要求排序,然后输出即可。 6 //注意点 7 //排序时直接对字符串进行排序非常消耗时间,可以利用字符串的下标代替字符串本身进行排序 8 9 using namespace std;10 int N, K, C;11 int main()12 {13 cin >> N >> K;14 vector
>courses(K + 1);15 vector
name(N + 1);16 int num;17 for (int i = 0; i < N; ++i)18 {19 cin >> name[i] >> C;20 for (int j = 0; j < C; ++j)21 {22 cin >> num;23 courses[num].push_back(i);24 }25 }26 for (int i = 1; i <= K; ++i)27 {28 if (courses[i].size() == 0)continue;29 cout << i << " " << courses[i].size() << endl;30 sort(courses[i].begin(), courses[i].end(), [=](int a, int b) { return name[a] < name[b]; });31 for (auto a : courses[i])32 cout << name[i] << endl;33 }34 return 0;35 }

 

转载于:https://www.cnblogs.com/zzw1024/p/11273431.html

你可能感兴趣的文章
解决java.lang.NoClassDefFoundError: org/apache/log4j/Level
查看>>
端口号
查看>>
mysql for macOS安装
查看>>
HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
查看>>
语言基础
查看>>
C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)
查看>>
C#中字符串转换成枚举类型的方法
查看>>
Airplace平台
查看>>
TinyOS实例介绍
查看>>
我是怎么定义微服务平台?
查看>>
python random
查看>>
input输入框只允许输入数字/ 数字+小数点/ 文字+字母/ 等解决方法
查看>>
【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)...
查看>>
mysql 5.6 参数详解
查看>>
求旋转数组的最小元素
查看>>
Gson解析Json数组
查看>>
Lintcode: Fast Power
查看>>
Pocket Gem OA: Log Parser
查看>>
枚举也能直接转换为对应的数值输出
查看>>
angularjs1-7,供应商
查看>>