QOJ.ac

QOJ

Time Limit: 2 s - 3 s Memory Limit: 1024 MB Total points: 20

#5861. RPI

Statistics

在美国,每年有 350 所学校争夺 NCAA 大学生篮球锦标赛的邀请名额。面对如此多的学校,该如何决定谁应该获得邀请呢?大多数球队之间从未交手,且有些球队的赛程比其他球队困难得多。

以下是 4 支球队 A、B、C、D 的赛程示例:

|ABCD
-+----
A|.11.
B|0.00
C|01.1
D|.10.

每行中的 1 代表一场胜利,0 代表一场失利。例如,球队 C 战胜了 B 和 D,输给了 A。球队 A 战胜了 B 和 C,但未与 D 交手。

NCAA 锦标赛委员会使用一种称为 RPI(胜率指数,Ratings Percentage Index)的公式来帮助球队排名。传统上,其定义如下:

RPI = 0.25 * WP + 0.50 * OWP + 0.25 * OOWP

WP、OWP 和 OOWP 对每支球队的定义如下:

  • WP(胜率,Winning Percentage)是你所赢比赛占总比赛场次的比例。

    在示例赛程中,球队 A 的 WP = 1,球队 B 的 WP = 0,球队 C 的 WP = 2/3,球队 D 的 WP = 0.5。

  • OWP(对手胜率,Opponents' Winning Percentage)是你所有对手的 WP 的平均值,计算时需先剔除他们与你交手的比赛。

    例如,如果剔除与球队 D 交手的比赛,那么球队 B 的 WP = 0,球队 C 的 WP = 0.5。因此,球队 D 的 OWP = 0.5 * (0 + 0.5) = 0.25。同理,球队 A 的 OWP = 0.5,球队 B 的 OWP = 0.5,球队 C 的 OWP = 2/3。

  • OOWP(对手的对手胜率,Opponents' Opponents' Winning Percentage)是你所有对手的 OWP 的平均值。OWP 即为上一步计算出的数值。

    例如,球队 A 的 OOWP = 0.5 * (0.5 + 2/3) = 7/12。

综合以上各项,我们得出球队 A 的 RPI = (0.25 1) + (0.5 0.5) + (0.25 * 7 / 12) = 0.6458333...

关于 RPI,可以提出一些非常有趣的问题。它衡量球队能力的标准合理吗?对球队来说,赢得比赛更重要,还是安排强大的对手更重要?这些都是很好的问题,但对于本题,你的任务更直接:给定一份比赛赛程,你能计算出每支球队的 RPI 吗?

输入格式

输入的第一行包含测试用例的数量 T。接下来是 T 个测试用例。每个测试用例的第一行包含球队数量 N

接下来的 N 行,每行包含恰好 N 个字符('0'、'1' 或 '.'),表示与上述示例格式相同的赛程。第 i 行第 j 列的 '1' 表示球队 i 战胜了球队 j,'0' 表示球队 i 输给了球队 j,'.' 表示球队 i 从未与球队 j 交手。

输出格式

对于每个测试用例,输出 N + 1 行。第一行应为 "Case #x:",其中 x 是测试用例编号(从 1 开始)。接下来的 N 行应包含每支球队的 RPI,每行一个,顺序与赛程中的顺序一致。

相对误差或绝对误差不超过 $10^{-6}$ 的答案将被视为正确。

数据范围

$1 \le T \le 20$。

如果赛程中第 i 行第 j 列为 '1',则第 j 行第 i 列必为 '0'。

如果赛程中第 i 行第 j 列为 '0',则第 j 行第 i 列必为 '1'。

如果赛程中第 i 行第 j 列为 '.',则第 j 行第 i 列必为 '.'。

每支球队至少与其他两支球队交手。

没有两支球队交手超过一次。

没有球队与自己交手。

内存限制:1GB。

小数据集(测试集 1 - 可见;8 分)

$3 \le N \le 10$。

时间限制:2 秒。

大数据集(测试集 2 - 隐藏;12 分)

$3 \le N \le 100$。

时间限制:3 秒。

样例

输入 1

2
3
.10
0.1
10.
4
.11.
0.00
01.1
.10.

输出 1

Case #1:
0.5
0.5
0.5
Case #2:
0.645833333333
0.368055555556
0.604166666667
0.395833333333

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.