混和头文件实战——7-49 打印学生选课清单(25 分)

简介: 混和头文件实战——7-49 打印学生选课清单(25 分)这题有点容易超时,我试了很多方法,发现用map连接string和一个vector容器是比较好的办法,接下来就给大家介绍介绍~

题目描述:

假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。

输入格式:

输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课程数。此后顺序给出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号(简单起见,课程从1到K编号)和选课学生总数(之间用空格分隔),之后在第二行给出学生名单,相邻两个学生名字用1个空格分隔。学生姓名由3个大写英文字母+1位数字组成。选课信息之后,在一行内给出了N个前来查询课表的学生的名字,相邻两个学生名字用1个空格分隔。

输出格式:

对每位前来查询课表的学生,首先输出其名字,随后在同一行中输出一个正整数C,代表该生所选的课程门数,随后按递增顺序输出C个课程的编号。相邻数据用1个空格分隔,注意行末不能输出多余空格。

输入样例:

10 5
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
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6

输出样例:

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

代码长度限制   16 KB

时间限制     400 ms

内存限制     64 MB

PS:这题有点容易超时,我试了很多方法,发现用map连接string和一个vector容器是比较好的办法,接下来就给大家介绍介绍~

思路分析:

1.创建一个map,连接学生的姓名(string)和一个vector<int>(逃课课程)

2.根据题目的要求来输入数据并且存储它们

3.对vector的数据进行排序!(这点很关键!)

如果没有排序就会:

网络异常,图片无法展示
|
没错,不要被 题目的示例 骗了

vector排序:

网络异常,图片无法展示
|

4.按照n个名字出现的顺序进行输出

代码如下:

#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
int main()
{
  map<string, vector<int>>mp;
  int n, k;
  cin >> n >> k;
  int x, y;
  string str;
  for (int i = 0; i < k; i++) {
    cin >> x >> y;
    for (int j = 0; j < y; j++) {
      cin >> str;
      mp[str].push_back(x);
    }
  }
  for (int i = 0; i < n; i++) {
    cin >> str;
    cout << str;
    cout << " " << mp[str].size();
    sort(mp[str].begin(), mp[str].end());
    for (int j = 0; j < mp[str].size(); j++) {
      cout << " " << mp[str][j];
    }
    cout << endl;
  }
}

提交结果:

网络异常,图片无法展示
|

PS:解题结束~

相关文章
|
安全 Linux 数据安全/隐私保护
【Linux】文件服务CIFS(Common Internet File System)
【Linux】文件服务CIFS(Common Internet File System)
400 0
|
缓存 监控 负载均衡
HTTP代理配置中的常见错误及其解决方案
随着互联网发展,使用HTTP动态代理IP的需求日益增加。配置HTTP代理时常见问题及解决方法包括:1) 代理服务器无法连接:检查网络、防火墙和代理服务状态;2) 认证失败:确认凭据和配置;3) 请求超时:增加超时时间、检查后端服务和网络延迟;4) 缓存问题:清理缓存、设置缓存控制或禁用缓存;5) SSL/TLS问题:正确配置证书并确保客户端信任;6) 访问控制问题:检查ACL和日志;7) 性能问题:监控资源、负载均衡和优化配置;8) 日志记录与分析问题:启用详细日志、设置轮换策略和使用分析工具。通过解决这些问题,可以更有效地管理HTTP代理。
1567 13
|
算法 定位技术
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
1406 0
最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
|
Linux 开发工具 Unix
19. 【Linux教程】nano 编辑器
19. 【Linux教程】nano 编辑器
630 0
19. 【Linux教程】nano 编辑器
|
存储 安全 网络安全
云计算与网络安全:构建安全的数字基石
【10月更文挑战第10天】 在当今数字化时代,云计算已成为推动企业创新和效率的关键驱动力。然而,随着数据和业务向云端迁移,网络安全问题变得日益突出。本文将探讨云计算与网络安全的融合,分析云服务中的主要安全挑战,并讨论如何通过先进的信息安全技术来应对这些挑战。我们将重点关注加密技术、访问控制、安全审计以及云服务提供商(CSP)的角色,以构建一个安全可靠的云计算环境。
|
JavaScript 前端开发 测试技术
vue 实现 pdf 预览功能
随着互联网的发展,PDF 文件在信息交流和文档分享中起着重要的作用。通过在 Vue 组件中实现 PDF 预览功能,我们可以为用户提供便捷的内容阅读体验。 通过阅读本文,读者将了解如何在 Vue 中实现强大的 PDF 预览功能,为用户提供方便的阅读体验。无论你是刚入门的 Vue 开发者,还是有一定经验的前端工程师,本文都将为你提供逐步实现 PDF 预览功能的详细指导。请继续阅读,开始你的 Vue PDF 预览功能之旅吧!
1411 4
|
运维 安全 数据安全/隐私保护
深入理解 RBAC
深入理解 RBAC
1125 0
深入理解 RBAC
|
2天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
4天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
748 12