1 条题解
-
0
题目分析
问题描述
我们需要实现一个编程竞赛排名系统,根据以下规则对参赛队伍进行排名:
- 首先按解题数量从多到少排序
- 解题数量相同的,按总时间(所有已解题目的时间之和)从少到多排序
- 总时间相同的,按几何平均时间从少到多排序
- 以上都相同的,按队伍名称的字典序排序
输入格式
- 多组测试数据,每组以队伍数量c开始(1 ≤ c ≤ 20)
- 接着c行,每行包含队伍名称和7个解题时间
- 输入以0结束
输出格式
- 对每组数据输出排名表
- 每行包含:排名(两位数)、队伍名称(左对齐10字符)、解题数、总时间、几何平均时间、7个原始时间
解题思路
-
数据结构设计
- 使用结构体存储队伍信息:名称、解题时间列表、解题数、总时间、几何平均时间
-
关键计算
- 解题数:统计非零时间的数量
- 总时间:所有非零时间的和
- 几何平均时间:使用公式exp( (ln t1 + ln t2 + ... + ln tn)/n )计算,并四舍五入
-
排序规则
- 实现自定义比较函数,按题目要求的优先级排序
-
排名处理
- 遍历排序后的列表,动态计算排名(处理并列情况)
-
格式化输出
- 使用iomanip控制输出格式
- 1
信息
- ID
- 246
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者