QOJ.ac

QOJ

時間限制: 15 s - 30 s 記憶體限制: 1024 MB 總分: 64

#5958. ARAM

统计

在游戏《英雄联盟》(League of Legends™)中,有一种名为“ARAM”的游戏模式,意为“全随机,全中路”(All Random, All Mid)。本题借用了这一概念,但不需要你玩过《英雄联盟》也能理解。

每当你开始一场 ARAM 游戏时,系统会从 $N$ 个“英雄”中随机分配给你一个,每个英雄被选中的概率相等。由于使用不同英雄获胜的概率不同,如果你运气不好,可能会希望换一个英雄。幸运的是,游戏包含“重随”(Reroll)功能。

重随会以如下方式随机重新分配给你一个英雄;但你不能随时重随。 重随能力类似于一种货币。在进行第一场 ARAM 游戏之前,你拥有 $R$ 点 RD(重随点数)。你只有在至少拥有 1 点 RD 时才能进行重随,且每次重随需要消耗 1 点 RD。每场游戏结束后,你会获得 $1/G$ 点 RD(其中 $G$ 为整数),但你拥有的 RD 总数不能超过 $R$:如果你在游戏前拥有 $R$ 点 RD,那么游戏结束后你依然拥有 $R$ 点 RD。

如果你至少拥有 1 点 RD,且选择重随,你将消耗 1 点 RD 并被随机重新分配 $N$ 个英雄中的一个,每个英雄被选中的概率相等。你有可能再次获得最初分配到的那个英雄。如果你对重随后的英雄不满意,且此时你仍至少拥有 1 点 RD,你可以再次重随。只要你拥有至少 1 点 RD,就可以一直重随。

例如,如果 $R=2$ 且 $G=2$,你在第一场游戏中进行了一次重随,那么第一场游戏结束后你将拥有 $1.5$ 点 RD。如果你接着玩下一场游戏且不进行重随,你将拥有 $2.0$ 点 RD。如果你再玩一场且不重随,你依然拥有 $2.0$ 点 RD(因为你拥有的 RD 不能超过 $R=2$)。如果你在下一场游戏中进行了两次重随,那么该场游戏结束后你将拥有 $0.5$ 点 RD。

给定英雄列表以及使用每个英雄获胜的概率。如果你玩 $10^{100}$ 场游戏并采取最优策略,你期望获胜的比例是多少?

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含三个空格分隔的整数:$N$、$R$ 和 $G$。下一行包含 $N$ 个空格分隔的实数 $P_i$,表示使用英雄 $i$ 获胜的概率。

输出格式

对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 是测试用例编号(从 1 开始),$y$ 是你玩 $10^{100}$ 场游戏后期望获胜的比例。

如果 $y$ 与正确答案的绝对误差或相对误差不超过 $10^{-10}$,则视为正确。请参阅 FAQ 以了解其含义及我们接受的实数格式。

数据范围

内存限制:1 GB。

$1 \le T \le 100$。

$0.0 \le P_i \le 1.0$。

$P_i$ 将表示为一位数字,后跟小数点,再后跟 4 位数字。

小数据范围

时间限制:15 秒。

$1 \le N \le 1000$。

$1 \le R \le 2$。

$1 \le G \le 3$。

大数据范围

时间限制:30 秒。

$1 \le N \le 1000$。

$1 \le R \le 20$。

$1 \le G \le 20$。

样例

样例输入 1

3
2 1 1
1.0000 0.0000
3 1 1
1.0000 0.0000 0.5000
6 2 3
0.9000 0.6000 0.5000 0.1000 0.2000 0.8000

样例输出 1

Case #1: 0.750000000000
Case #2: 0.666666666667
Case #3: 0.618728522337

说明

《英雄联盟》是 Riot Games 的商标。Riot Games 不认可且未参与 Google Code Jam。

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.