一、技术总结

  1. 首先题目要看清湖,提出的条件很关键,比如for循环的终止条件,特别注意。
  2. 还有这个题目主要考虑到vector的使用,还有注意一定要加上using namespace std;
  3. 输出格式,题目中如果没有要求什么最后一行不能有空格什么的,就不要画蛇添足,按照正常的换行就行。
  4. 这里采用的是先使用二维字符串数组存储名字,然后名字也有编号,使用这个编号来记录每个课程中选取的学生,巧妙的避免了要记录下字符串的尴尬局面。然后再开辟一个vector容器来记录课程中选课学生的编号,最后排序即可。
  5. 如果很大的字符串存储,不要使用string,要使用char数组,可以是二维的。然后如果要比较字符串的大小,按字母从小到大使用cmp如下:
bool cmp(int a, int b){
//这里是按字符串从小到大,如果相反改变下面中小于号为大于号即可,同时stu是提前声明的全局变量二维字符串数组
return strcmp(stu[a], stu[b]) < 0;
}

二、参考代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 40010;
const int K = 2510;
char stu[N][5];
vector<int> q[K];
bool cmp(int a, int b){
return strcmp(stu[a], stu[b]) < 0;
}
int main(){
int n,k;
scanf("%d%d", &n, &k);
int num = 0;
int course = 0;
for(int i = 0; i < n; i++){
scanf("%s %d", stu[i], &num);
for(int j = 0; j < num; j++){
scanf("%d", &course);
q[course].push_back(i);
}
}
for(int i = 1; i <= k; i++){
sort(q[i].begin(), q[i].end(), cmp);
printf("%d %d\n", i, q[i].size());
for(int j = 0; j < q[i].size(); j++){
printf("%s\n", stu[q[i][j]]);
}
}
return 0;
}

最新文章

  1. 基于WDF的PCI/PCIe接口卡Windows驱动程序(5)-如何为硬件移植驱动程序
  2. 抢凳子日数据sql
  3. ubuntu输入su命令显示 Authentication failure解决
  4. 《好设计不简单Ⅱ:UI设计师必须了解的那些事》
  5. [JAVA设计模式]第四部分:行为模式
  6. 学习jax-ws(一)
  7. Excel表格中汉字转拼音
  8. setTimeOut和setInterval详解
  9. UVALive 6467 Strahler Order 拓扑排序
  10. 记录一次参加D2前端技术论坛的杭州之行
  11. 51nod 1231 记分牌
  12. C# 通过GUID生成不重复的ID
  13. datetime的小坑
  14. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD
  15. 从Container内存监控限制到CPU使用率限制方案
  16. 【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析
  17. 【python基础】字符串格式化(% VS format)
  18. 使用tkinter做简单计算器
  19. JAVA基础知识详解
  20. 简述对Vuex的理解

热门文章

  1. mathematica练习程序(曲线的曲率与挠率)
  2. xml模块(了解)
  3. 避免python二维列表append一维列表时浅拷贝问题
  4. 巧妙利用selenium中的JS操作来处理特殊的文本框
  5. 一次业务网关用ASP.NET Core 2.1重构的小结
  6. 【CodeChef】Find a special connected block - CONNECT(斯坦纳树)
  7. MySQL 示例数据库
  8. abp实战-ContosoUniversity Abp版-1运行项目
  9. java核心技术第五篇之事务和MVC模式
  10. XAF-内置初始化数据 (XPO)