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 ...
随机推荐
- P1049 数列的片段和
P1049 数列的片段和 转跳点:
- UVA - 211 The Domino Effect(多米诺效应)(dfs回溯)
题意:根据多米诺骨牌的编号的7*8矩阵,每个点可以和相邻的点组成的骨牌对应一个编号,问能形成多少种由编号组成的图. 分析:dfs,组成的图必须有1~28所有编号. #pragma comment(li ...
- TS-Lint 安装方法
1 在 Visual Studio Extensions 里下载 TSLint 2 在项目根目录下放 tslint.json 文件 (里面的规则定死就好 我认为没有特别大的意义)
- hibernate字段值无法保存
通过hibernate对Blogstorage对象进行保存操作,filepath属性的值无论设置多少遍都保存不进去 后来发现是 Blogstorage.hbm.xml 里面根本没有配置filepath ...
- 二十六、JavaScript之查找子字符串substring和slice和substr
一.代码如下 二.效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" conten ...
- C#重写窗体的方法
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 黑马oracle_day01:02.oracle的基本操作
01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象 05.oracle编程 02.oracle的基本操作 PLSQL中文乱码问题解决1.查看服务 ...
- CodeForces - 710E Generate a String (dp)
题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...
- UVA - 1001 Say Cheese(奶酪里的老鼠)(flod)
题意:无限大的奶酪里有n(0<=n<=100)个球形的洞.你的任务是帮助小老鼠A用最短的时间到达小老鼠O所在位置.奶酪里的移动速度为10秒一个单位,但是在洞里可以瞬间移动.洞和洞可以相交. ...
- DAO三层架构及工厂模式
目录结构 1.在domain包中创建User实体类 package com.rick.domain; import java.util.Date; public class User { privat ...