鱼C论坛

 找回密码
 立即注册
查看: 1392|回复: 10

[已解决]【梦想森林】【传统题目】第二期 标准分计算器

[复制链接]
发表于 2023-11-16 15:48:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


标准分计算器


上一期:https://fishc.com.cn/thread-236399-1-1.html




也许在上一期的超级计算器,大家可能没有什么灵感,所以这一期,我们举了一个常用的例子,来帮助大家启发“超级计算器”的灵感!

问题描述

zhangjinxuan 所在的学校举行了一场大考,一共有 N 名选手参加。

这一场大考又分为 M 次考试,第 i 个人在第 j 场考试得了 a_{i,j} 分。

因为每一场考试的难易度不同,直接把分数加起来分排名是不公平的,所以,我们需要引入标准分,具体而言,人 i 在第 j 场考试取得的标准分是他的实际分数与这场考试的最高分的比。

这样,我们就得到了每个人在每一场考试的标准分,只要对一个人所有考试的标准分取平均值,我们就可以很好的衡量每一位选手在这场大考中的发挥。

因为 zhangjinxuan 没有时间去统计,所以他把榜单给了你,让你实现这个标准分计算器!

形式化题意

(本公式过于抽象,请谨慎观看。Latex 中食用更佳)

给定一个 $N\times M$ 的二维序列 $a$,对于每一个 $i(1\le i\le N)$,请求出 $frac{\sum_{j=1}^{M}\frac{a_{i,j}}{\max_{i=1}^{N}a_{i,j}}}{M}$

输入格式

第一行两个整数 N,M。

接下来 N 行,每行有 M 个以空格隔开的整数表示成绩单 a。

输出格式

输出 N 行,每一行一个在 0~1 的浮点数表示答案,请输出两位小数。

输入示例
5 3
100 80 90
100 60 60
80 70 50
90 90 100
100 90 100

输出示例
0.93
0.76
0.69
0.97
1.00

对于最后一个人,因为这几场考试他都是最高分,所以他的平均标准分就是 1。

提示

对于 50% 的数据,1 <= N,M <= 100。

对于 100% 的数据,1 <= N,M <=1000, 1<= a_{i,j} <= 100$。

非常锻炼基本功哦~一定要小心编写代码~




本题 zhangjinxuan 原创,已经收入梦想 OJ,测评链接 -> https://hydro.ac/d/gaoshan/p/43




题目解析

请独立思考再查看答案!

游客,如果您要查看本帖隐藏内容请回复
[/hide]

最佳答案
2023-11-16 15:55:56
这个问题可以使用Python来解决。下面是解决方案:
N, M = map(int, input().split())
scores = []
for _ in range(N):
    row = list(map(int, input().split()))
    scores.append(row)

max_scores = [max(col) for col in zip(*scores)]
for i in range(N):
    standard_scores = [score / max_scores[j] for j, score in enumerate(scores[ i])]
    average_standard_score = sum(standard_scores) / M
    print('%.2f' % average_standard_score)

这段代码首先读取输入的N和M,然后读取N行M列的成绩单。接下来,我们找到每一场考试的最高分,然后计算每个人的标准分并求平均值,最后将结果输出。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
高山 + 5 + 5 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-17 08:49:47 | 显示全部楼层
梦想护卫舰,终将走向衰落

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
陶远航 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-11-16 15:49:11 | 显示全部楼层
这道题目是一个关于标准分计算的问题,需要对每个选手在每场考试中的分数进行处理,最终求出每个选手的平均标准分。

我已经给出了一个 C++ 的解法,并附上了代码和简要的解题思路。你可以参考这个解法,并根据需要进行调整和优化。

如果你有任何关于代码的疑问,或者需要进一步的解释,请随时告诉我,我可以帮助你进一步理解和修改代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-16 15:51:14 | 显示全部楼层
Mike_python小 发表于 2023-11-16 15:49
这道题目是一个关于标准分计算的问题,需要对每个选手在每场考试中的分数进行处理,最终求出每个选手的平均 ...

感谢您的回答!非常感谢您支持本系列!(雾)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-16 15:55:56 | 显示全部楼层    本楼为最佳答案   
这个问题可以使用Python来解决。下面是解决方案:
N, M = map(int, input().split())
scores = []
for _ in range(N):
    row = list(map(int, input().split()))
    scores.append(row)

max_scores = [max(col) for col in zip(*scores)]
for i in range(N):
    standard_scores = [score / max_scores[j] for j, score in enumerate(scores[ i])]
    average_standard_score = sum(standard_scores) / M
    print('%.2f' % average_standard_score)

这段代码首先读取输入的N和M,然后读取N行M列的成绩单。接下来,我们找到每一场考试的最高分,然后计算每个人的标准分并求平均值,最后将结果输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-17 15:07:52 | 显示全部楼层
zhangjinxuan 发表于 2023-11-17 08:49
梦想护卫舰,终将走向衰落

正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-17 19:30:23 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-19 10:33:19 | 显示全部楼层
zhangjinxuan 发表于 2023-11-17 08:49
梦想护卫舰,终将走向衰落

正确的,中肯的,一针见血的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-25 15:43:08 | 显示全部楼层
@FishC_GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-25 15:43:13 | 显示全部楼层

你好!有什么编程问题我可以帮助解答吗?
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 20:50:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 10:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表