QOJ.ac

QOJ

Limite de temps : 6 s - 12 s Limite de mémoire : 1024 MB Points totaux : 60

#5879. Google Royale

Statistiques

在访问 Theta VIII 行星时,你们的探险队被迫参与了一本拙劣小说的情节,故事发生在一间名为 Google Royale 的酒店/赌场中。为了逃离 Royale,你们必须通过赌博赚取足够的钱,以便以 V 美元买下酒店并离开。

你们初始拥有 A 美元,并将参与多轮投注回合,直到满足以下两个条件之一:如果任何一轮投注结束时你们的资金 $\le 0$,你们就输了;如果一轮投注结束时资金 $\ge \mathbf{V}$,你们就可以买下酒店并离开。否则,你们将继续开始新的投注回合。

每一轮投注由一次或多次抛硬币组成。如果回合开始时你有 $X$ 美元,你可以选择一个介于 $1$ 到 $\min(X, \mathbf{M})$ 之间的整数 B 作为第一枚硬币的投注额。

有 50% 的概率你赢得抛硬币,Royale 立即支付你 B 美元。此时你拥有 $X + B$ 美元,投注回合结束。

有 50% 的概率你输掉抛硬币,并欠 Royale B 美元。此时你可以选择支付欠款 B 美元并结束回合。或者,如果 $2B \le \mathbf{M}$,你可以选择推迟支付,并进行第二次抛硬币,投注额加倍为 $2B$ 美元。如果再次输掉,你将欠 Royale $B+2B=3B$ 美元。你可以以这种方式继续将投注额加倍至 $4B, 8B$ 等,直到你赢得一次抛硬币、选择停止,或者下一次投注额将超过 M。即使当前回合中所有投注的总和超过了 $X$,你也可以继续。

一旦回合结束,你必须为每一枚输掉的硬币支付给 Royale,如果赢了一枚硬币,Royale 会支付给你相应的金额。例如,如果你以 1 美元的投注额开始,输掉三枚硬币,然后赢了一枚,你将获得 $8 - 4 - 2 - 1 = 1$ 美元。如果你输掉三枚硬币后停止,你将损失 $4 + 2 + 1 = 7$ 美元。如果支付后你的剩余资金为 $0$ 或更少,那么你就破产了,游戏失败。

幸运的是,你带了一台安卓机器人,它能够计算出如果你采取最优策略获胜的概率。请问该概率是多少,以及为了达到该概率,你可以进行的最大初始投注额是多少?请记住,你不能投注超过 M 的金额!

样例

假设你决定使用以下(非最优)策略。你有 A=5 美元;M=20 且 V=40。以下事件序列是可能的:

  • 第 1 轮:你可以从投注 1, 2, 3, 4 或 5 美元开始。你决定以 2 美元开始一轮投注。
    • 第 1 步 (B=$2):你赢了第一次抛硬币。你获得 2 美元,投注回合结束。现在你有 7 美元。
  • 第 2 轮:你以 5 美元开始一轮投注。
    • 第 1 步 (B=$5):你输了第一次抛硬币。现在你欠 Royale 5 美元。由于 $5 \times 2 \le 20$,你可以进行另一次投注额为 $5 \times 2=10$ 美元的抛硬币。你选择不这样做。你损失 5 美元,投注回合结束。现在你有 2 美元。
  • 第 3 轮:你以 2 美元开始一轮投注。
    • 第 1 步 (B=$2):你输了。现在你欠 Royale 2 美元。你选择以 4 美元的投注额再抛一次硬币。
    • 第 2 步 (B=$4):你输了。现在你总共欠 Royale 6 美元。这超过了你拥有的金额,但这没关系。你选择以 8 美元的投注额再抛一次硬币。
    • 第 3 步 (B=$8):你赢了。你获得 8 美元,支付你欠的 2+4=6 美元,投注回合结束。现在你有 4 美元。
  • 第 4 轮:你以 2 美元开始一轮投注。
    • 第 1 步 (B=$2):你输了。现在你欠 Royale 2 美元。你选择以 4 美元的投注额再抛一次硬币。
    • 第 2 步 (B=$4):你输了。现在你总共欠 Royale 6 美元。你选择以 8 美元的投注额再抛一次硬币。
    • 第 3 步 (B=$8):你输了。现在你总共欠 Royale 14 美元。你选择以 16 美元的投注额再抛一次硬币。
    • 第 4 步 (B=$16):你输了。现在你总共欠 Royale 30 美元。由于 $2 \times 16 > \mathbf{M}$,你不能再抛硬币,必须支付欠款。现在你有 -26 美元;你输了。

输入格式

输入的第一行给出测试用例的数量 T。接下来是 T 行。每行包含三个由空格分隔的整数:AMV

输出格式

对于每个测试用例,输出一行,包含 "Case #x: y z",其中 x 是用例编号(从 1 开始);y 是采取最优策略时的获胜概率;z 是在不降低获胜概率的前提下可以进行的最大初始投注额。y 的精度必须在 $10^{-6}$ 的绝对或相对误差范围内。

数据范围

$1 \le \mathbf{T} \le 100$。

内存限制:1GB。

小数据集

$1 \le \mathbf{M} \le 20$。

$1 \le \mathbf{A} < \mathbf{V} \le 20$。

时间限制:6 秒。

大数据集

$1 \le \mathbf{M} \le 10^{16}$。

$1 \le \mathbf{A} < \mathbf{V} \le 10^{16}$。

时间限制:12 秒。

样例

输入格式 1

4
1 1 3
3 6 12
4 20 15
13 6 20

输出格式 1

Case #1: 0.333333333 1
Case #2: 0.500000000 3
Case #3: 0.755555555 3
Case #4: 0.730769231 6

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.