HM210 评委去极值
HM210 评委去极值
来源: 第 210 集 STL案例1-评委打分
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
有 \(5\) 名选手,姓名依次为 选手A、选手B、选手C、选手D、选手E。每位选手由 \(10\) 名评委打分。对每位选手:
- 把 \(10\) 个分数放进双端数组。
- 用标准算法
sort把区间排成升序(默认从小到大)。排完后,两端正好是极值。 - 用
pop_front去掉最低分,用pop_back去掉最高分。之所以用双端数组存放分数,就是为了头尾都能直接弹掉;动态数组没有头删接口,头部插删也慢。 - 把剩下的分数累加成总分,再除以**当前剩余个数**得到平均分。去掉两端后剩余 \(8\) 个,不要再除以 \(10\)。平均分按整数除法截断,写入该选手。
请用选手类(或结构体)记录姓名和平均分。\(5\) 名选手放进动态数组。创建选手、打分、显示得分写成三个函数,容器参数必须按**引用**传入,否则外侧看不到修改。
姓名用种子串 ABCDE 拼出来:先写下前缀 选手,再追加第 \(i\) 个字母。可以用 +=,也可以用 append。创建时平均分先置 \(0\),打完分再写回去。遍历选手和分数时使用迭代器;给选手赋值平均分可以用 it->score。
本题分数由输入给出,不要用未固定种子的随机数。课堂上若自己生成 \(60\) 到 \(100\) 的随机分,应写成 rand() % 41 + 60;写成 rand() % 40 + 60 只能到 \(99\)。
输入格式
共 \(5\) 行,第 \(i\) 行 \(10\) 个整数,表示第 \(i\) 名选手(选手A 到 选手E)的 \(10\) 个评委分数。
输出格式
共 \(5\) 行,每行格式为:姓名、一个空格、整数平均分。行末无多余空格。
样例
输入 #1
60 70 80 90 100 65 75 85 95 99
60 60 60 60 60 100 100 100 100 100
80 80 80 80 80 80 80 80 80 80
61 62 63 64 65 66 67 68 69 70
100 99 98 97 96 95 94 93 92 91
输出 #1
选手A 82
选手B 80
选手C 80
选手D 65
选手E 95
输入 #2
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 70 80 90 100
输出 #2
选手A 55
选手B 55
选手C 55
选手D 55
选手E 55
说明
每位选手恰好 \(10\) 个分数,去掉 \(1\) 个最低和 \(1\) 个最高后剩 \(8\) 个。平均分 \(=\lfloor\textit{剩余分数之和}/8\rfloor\)。
- 样例 #1 中
选手A排序后为 \(60,65,70,75,80,85,90,95,99,100\),去掉 \(60\) 和 \(100\),剩余和 \(659\),\(659/8=82\)。选手B去掉一个 \(60\) 和一个 \(100\) 后剩余和 \(640\),\(640/8=80\)。 - 样例 #2 去掉 \(10\) 和 \(100\) 后剩余和 \(440\),\(440/8=55\)。
- 需要包含动态数组、双端数组、字符串和算法头文件。
信息
- ID
- 1209
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者