PAT B1038 统计同成绩学生超时问题
输入格式:
输入在第 1 行给出不超过 105 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。
输出格式:
在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。
输入样例:
10
60 75 90 55 75 99 82 90 75 50
3 75 90 88
输出样例:
3 2 0
这道题的思路还是比较简单直接的。用一维数组的下标作为成绩来统计相应成绩学生的个数。
我的代码如下:
#include <iostream>
using namespace std;
int main()
{
int studentCnt,tempScore;
int findCnt,tempNum;
int scoreCnt[101]={0};//初始化数组
cin >> studentCnt;
for(int i=0; i<studentCnt; ++i)
{
cin >> tempScore;
scoreCnt[tempScore] ++;//统计每个成绩学生的个数
}
cin >> findCnt;
bool symbolFlag = false;
for(int i=0; i<findCnt; ++i)
{
cin >> tempNum;
if(symbolFlag)
cout << " ";
else
symbolFlag = true;
cout << scoreCnt[tempNum];//输出要查询成绩对应的学生个数
}
return 0;
}
不过提交发现,测试点3出现超时问题。时间复杂度主要在于for循环中的代码。
于是我把cin和cout用scanf和sprintf进行替换,再次提交,成功通过。
更详细原因可参考博文:https://blog.csdn.net/qq1169091731/article/details/51926460
总之,在OJ上做题尽量使用scanf和printf,尤其是有大量数据需要输入输出时。
替换后代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int studentCnt,tempScore;
int findCnt,tempNum;
int scoreCnt[101]={0};
scanf("%d",&studentCnt);
for(int i=0; i<studentCnt; ++i)
{
scanf("%d",&tempScore);
scoreCnt[tempScore] ++;
}
scanf("%d",&findCnt);
bool symbolFlag = false;
for(int i=0; i<findCnt; ++i)
{
scanf("%d",&tempNum);
if(symbolFlag)
printf(" ");
else
symbolFlag = true;
printf("%d",scoreCnt[tempNum]);
}
return 0;
}
PAT B1038 统计同成绩学生超时问题的更多相关文章
- PAT B1038 统计同成绩学生
读入N名同学的成绩,然后将获得某一给定分数的学生人数输出第一行给出不超过10^5的正整数,即学生总数:第二行给出N名学生的百分制的成绩,中间以空格分隔:第三行给出要查寻的分数个数K,随后是K个分数,中 ...
- PAT 1038 统计同成绩学生(20)(代码)
1038 统计同成绩学生(20)(20 分) 本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过10^5^的正整数N,即学生总人数.随后1行给出N名学生 ...
- 【算法笔记】B1038 统计同成绩学生
1038 统计同成绩学生 (20 分) 本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 105 的正整数 N,即学生总人数.随后一行给 ...
- 【PAT】B1038 统计同成绩学生(20)(20 分)
#include<stdio.h> int arr[102]={0};//分数作为自己的下标,注意 int main(){ int N;scanf("%d",& ...
- PAT——1038. 统计同成绩学生
本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过105的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中间以空格分隔.最后1行给出要查 ...
- PAT 1038. 统计同成绩学生(20)
本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过105的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中间以空格分隔.最后1行给出要查 ...
- PAT 1038 统计同成绩学生
https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040 本题要求读入N名学生的成绩,将获得某一给定分 ...
- B1038 统计同成绩学生 (20 分)
#include<iostream> #include<cstring> using namespace std; const int maxn = 10010; int sc ...
- 牛客网PAT练兵场-统计同成绩学生
题解:开100的数组,进行存储人数,方便查询 题目地址:https://www.nowcoder.com/questionTerminal/3df4810cc0664b8bb848d785f68f7c ...
随机推荐
- 《YouTube 网站的架构演进》阅读笔记
概述 YouTube 在国内是个404网站,需要翻墙得见,这是有用的废话,先铺垫一下. 从全球网站来看,它仅次于母公司 Google,全球排名位列第2.每天超过5亿以上视频播放量,平均每个用户点击10 ...
- Java 类的属性
章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...
- redis改配置
命令行: 暂时生效,适合于做测试,或者线上马上服务修改,重启失效 CONFIG set stop-writes-on-bgsave-error no OK CONFIG get stop-writes ...
- 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包
将项目复制到其地方的时候编译会报错,按照官网方法也不行,从网上查了一个有用的方法如下 打开CSPROJ文件.删除如下代码, <Import Project="..\packages\ ...
- P1049 数列的片段和
P1049 数列的片段和 转跳点:
- ActorFramework教程对比及规划
牢骚太盛防肠断,风物长宜放眼量. 一.引子 昨天的文章,本来就是想写写ActorFramework的教程内容,结果写着写着偏了,变成了吐槽. 首先,声明一下,自己从未参加过任何LabVIEW培训班,也 ...
- 九十八、SAP中ALV事件之十一,查看图片
一.输入事务代码OAER 二.可以看到相关的图片文件了
- 4. Retrieving a mapper(检索映射器)
Retrieving a mapper(检索映射器) 4.1. The Mappers factory(映射工厂) 可以通过 org.mapstruct.factory.Mappers 类检索映射器实 ...
- 20 - CommonJS - 规范的具体内容
- java.sql.Date转换
---恢复内容开始--- JAVA 处理时间 - java.sql.Date.java.util.Date与数据库中的Date字段的转换方法,以及util包下的Date类与字符串的相互转换 在java ...