数据较大时的输入输出

先来看问题

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

输入格式:

输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。

输出格式:

顺序输出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号和选课学生总数(之间用空格分隔),之后在第二行按字典序输出学生名单,每个学生名字占一行。

输入样例:

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

输出样例:

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

代码长度限制

16 KB

时间限制

1000 ms

内存限制

64 MB

我们只需要设置一个vector<vector<string>> course(k);表示k门课程,当输入学生选课名单时对应的课程上加一个名字,随后输出所有课程对应的名字就行。所以我就写了下面的代码,但是交上去有个点没过。

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
    int n, k;
    cin >> n >> k;
    string name;
    int i, j, m;
    vector<vector<string>> course(k);
    while (n--)
    {
        cin >> name >> m;
        while (m--)
        {
            cin >> i;
            course[i - 1].emplace_back(name);
        }
    }
    
    for (i = 0; i < k; i++)
    {
        sort(course[i].begin(), course[i].end());
        cout << i + 1 << " " << course[i].size() << endl;
        for (j = 0; j < course[i].size(); j++)
        {
            cout << course[i][j] << endl;
        }
    }
}

为什么会这样呢?我查了资料发现,简单来讲就是,c++的cin和cout函数输入输出的时候会把输入输出的数据先放到一个地方,然后再输入输出,而c语言的scanf和printf是直接输入输出,所以cin和cout不如后者。当输入输出数据量很大的时候,cin,cout就会慢好多,要提高cin,cout的效率,就得再使用cin,cout之前加上 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);这三句话,这样就能将“把数据先放到一个地方”的步骤给去掉,效率大大提高。要注意的是,加上这三句话后,不能cout<<endl;应该用'\n',要不然速度还是会慢好多。看我改进后的结果。

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int main()
{
   ios::sync_with_stdio(false);
    cin.tie(0);
   cout.tie(0);
    int n, k;
    cin >> n >> k;
    string name;
    int i, j, m;
    vector<vector<string>> course(k);
    while (n--)
    {
        cin >> name >> m;
        while (m--)
        {
            cin >> i;
            course[i - 1].emplace_back(name);
        }
    }
    
    for (i = 0; i < k; i++)
    {
        sort(course[i].begin(), course[i].end());
        cout << i + 1 << " " << course[i].size() << "\n";
        for (j = 0; j < course[i].size(); j++)
        {
            cout << course[i][j] << "\n";
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/147648.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF程序给按钮增加不同状态的图片

首先我们在资源里添加几个图片&#xff0c;Up&#xff0c;Over和Down状态。 然后我们创建一个Style。默认我们的背景设置成Up 然后在Triggers里添加代码&#xff0c;当Property&#xff1a;IsMouseOver为True的时候更换成Over&#xff1b;当Property&#xff1a;IsPressed为Tr…

鸿蒙原生应用开发-关于页面接口router返回问题与解决思路

一、模块导入 import router from ohos.router 提供通过不同的url访问不同的页面&#xff0c;包括跳转到应用内的指定页面、用应用内的某个页面替换当前页面、返回上一页面或指定的页面等。 二、接口说明 router.pushUrl()&#xff1a;跳转到应用内的指定页面。 router.replace…

使用Zoho Projects软件进行高效项目管理的方法

本文将通过Zoho Projects项目管理软件的功能&#xff0c;结合一般情况下使用Zoho Projects进行项目管理的过程&#xff0c;为大家展示如何充分利用Zoho Projects项目管理软件进行项目管理。我们将详细介绍任务看板、文档管理、甘特图与报表、里程碑、issue等功能&#xff0c;基…

笔记无法正常展示,小红书笔记收录分析!

很多时候&#xff0c;小红书收录意味着你的流量其实是被记录了&#xff0c;这是有利于你的笔记曝光的一个表现&#xff0c;今天就来带大家一起分享下&#xff0c;为什么笔记无法正常展示&#xff0c;小红书笔记收录分析&#xff01; 一、什么叫小红书笔记收录 不可能所有的笔记…

基于SSM的药店药品销售系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

python数据处理作业1:输出1~100之间不能被7整除的数,美化输出格式要求每行输出10个数字

每日小语&#xff1a; 其实人和树是一样的&#xff0c; 越是向往高处的阳光&#xff0c; 它的根越要伸向黑暗的地底。——尼采 gpt代码&#xff1a; count 0 # 用于计数每行输出的数字个数for num in range(1, 101):if num % 7 ! 0:print(f{num:3}, end )count 1# 如果输…

2023深圳高交会,11月15-19日在深圳会展中心盛大开幕,展出五天时间

跨越山海&#xff0c;共赴鹏城。 11月15日至19日&#xff0c;第二十五届中国国际高新技术成果交易会在深圳会展中心&#xff08;福田展区&#xff09;和深圳国际会展中心&#xff08;宝安展区&#xff09;两馆同时举行。一场不可错过的全球性高科技盛会如期而至。 科技赋能发…

达梦集群搭建_(ky10.aarch64架构)

一、数据库安装 ###&#xff08;一&#xff09;安装前准备 版本准备 [rootlocalhost ~]# uname -a Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux将镜像文件传到/opt目录下 [rootlocalhost100 …

连小白都在用的电子期刊制作网站

你是不是也想制作一份精美的电子期刊&#xff0c;却苦于没有专业的技能和工具&#xff1f;现在&#xff0c;有一款制作电子期刊的网站&#xff0c;连小白都能轻松制作电子期刊&#xff01;它就是今天要介绍的——【FLBOOK在线制作电子杂志平台】&#xff01; 【FLBOOK在线制作电…

灰度图处理方法

做深度学习项目图像处理的时候常常涉及到灰度图处理&#xff0c;这里对自己处理灰度图的方式做一个记录&#xff0c;后续有更新的话会在此更新 一&#xff0c;多维数组可视化 将多维数组可视化为灰度图 img_gray Image.fromarray(img, modeL) # 实现array到image的转换,m…

煮蛋器产业研究:全球市场将超过10亿美元

近年来&#xff0c;随着科技的迅猛发展&#xff0c;煮蛋器市场逐渐呈现出多元化和智能化趋势。厂商们不断推出新款煮蛋器&#xff0c;配备更多功能以满足消费者的个性化需求。同时&#xff0c;煮蛋器也受益于烹饪技术的创新&#xff0c;如加热控制和计时功能等的引入&#xff0…

解决 requests 库下载文件问题的技术解析

在一个使用requests库的conda食谱构建过程中&#xff0c;我们注意到存在一个文件下载问题。该文件是从https://dakota.sandia.gov/sites/default/files/distributions/public/dakota-6.5-public.src.tar.gz下载的。使用curl和urllib2库可以正确下载文件&#xff0c;但使用reque…

ImageJ灰度值量化分析 实用技巧——免疫组化分析(定量分析篇)

在临床病理诊断中&#xff0c; 免疫组织化学( Immunohistochemistry, IHC) 是一种很重要的技术和手段。 免疫组化标记时细胞阳性着色程度取决于抗原含量、分布密度和标记方法及其敏感性。 一般而言&#xff0c;抗原含量越多&#xff0c;分布密度越高&#xff0c;阳性结果显色…

基于SSM的OA办公管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

数据库表字段以表格形式写入Word

在项目的开发中&#xff0c;难免会有编写概要设计、详细设计文档的要求&#xff0c;而在这些文档中&#xff0c;不可避免的就是要把数据库表的字段信息以表格的形式体现出来。例如下面这种格式 表数量少点还可以一点点粘贴&#xff0c;多了的话真的会疯&#xff0c;所以自己编写…

Redis的持久化操作

目录 一、Redis的持久化方式 1.RDB方式进行持久化 1.1 RDB的两种形式 &#xff08;a&#xff09;自动快照&#xff1a; &#xff08;b&#xff09;手动快照 1.2.RDB的特点 1.3.RDB的使用情况 2.AOF方式进行持久化 2.1 AOF持久化 2.2 AOF重写机制 3.RDB和AOF使用情景 R…

做一个Springboot文件上传-阿里云

概述 这个模块是用来上传头像以及文章封面的&#xff0c;图片的值是一个地址字符串&#xff0c;一般存放在本地或阿里云服务中 1、本地文件上传 我们将文件保存在一个本地的文件夹下&#xff0c;由于可能两个人上传不同图片但是却同名的图片&#xff0c;那么就会一个人的图片就…

C++模拟实现——红黑树

一、介绍 红黑树也是对一般的搜索二叉树不能保证平衡的一个改进&#xff0c;和AVL树采用的思路不同&#xff0c;但同样需要旋转&#xff0c;其本质也是一颗平衡搜索二叉树&#xff0c;其节点有颜色的区分&#xff0c;并且被一些规则束缚&#xff0c;在这些规则下&#xff0c;能…

从《lc42 接雨水》到《lc84 柱状图中的最大矩形》

1 LC42 接雨水 1.1 答案 解法四&#xff1a;双指针 动态规划中&#xff0c;我们常常可以对空间复杂度进行进一步的优化。 例如这道题中&#xff0c;可以看到&#xff0c;max_left [ i ] 和 max_right [ i ] 数组中的元素我们其实只用一次&#xff0c;然后就再也不会用到了。所…