QOJ.ac

QOJ

Time Limit: 4.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#15418. 幸运数论

Statistics

Lucy 是游戏厅的常客。游戏厅里的所有机器都会送出奖券以兑换奖品!Lucy 最喜欢的机器工作原理如下。

该机器只有两个按钮:“Roll”(摇号)和 “Withdraw”(提现)。每当 Lucy 按下 “Roll” 时,机器会在屏幕上的计数器上增加一个在 $0$ 到 $d$ 之间随机生成的实数。在任何时候,她都可以按下 “Withdraw” 来获得与计数器数值相等的奖券,随后计数器清零。如果计数器的数值不是整数,机器会慷慨地将计数器向上取整,然后再发放奖券。

更正式地,机器存储一个实数 $S$,初始时等于 $0$。每次按下 “Roll” 时,机器会生成 $\Delta$ —— 一个在区间 $(0, d)$ 内均匀随机选择的实数。然后,$S$ 增加 $\Delta$ 的值。当按下 “Withdraw” 按钮时,机器将 $S$ 向上取整,给予玩家 $\lceil S \rceil$ 张奖券,然后将 $S$ 重置为零。Lucy 可以在任何时候在屏幕上以任意精度查看 $S$ 的值,并可以用它来决定是继续 “Roll” 还是 “Withdraw”。

Lucy 有足够的游戏币来按下 “Roll” $n$ 次,以及按下 “Withdraw” $k$ 次。找到一种策略,使得 Lucy 能够获得的奖券期望数量最大,并输出这个最大期望数量。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 2000$)。接下来是测试用例的描述。

每个测试用例的唯一一行包含三个整数 $n$、$k$ 和 $d$,分别表示摇号次数、提现次数以及每次摇号数值的上限($1 \le k \le n \le 2000$;$1 \le d \le 2000$)。

输出格式

对于每个测试用例,输出一个浮点数,表示 Lucy 可以获得的最大奖券期望数量。如果你的答案的绝对或相对误差不超过 $10^{-6}$,则视为正确。

样例

输入 1

3
3 2 1
5 5 3
7 1 10

输出 1

2.6250000000
10.0000000000
35.5000000000

说明

在第一个测试用例中,$n = 3$ 次摇号,$k = 2$ 次提现,且 $d = 1$,最优策略如下:

Lucy 首先进行一次摇号。根据得到的数值 $S$,有两种可能:

  • 数值小于 $\frac{1}{2}$。在这种情况下,Lucy 应该选择提现,然后再摇号两次,最后在结束时提现。在这种情况下,期望的奖券数量为 $1 + \frac{3}{2} = 2.5$(第一次提现获得 $1$ 张奖券,两次摇号后平均获得 $\frac{3}{2}$ 张奖券)。
  • 数值至少为 $\frac{1}{2}$。在这种情况下,最优策略是再次摇号、提现,然后进行最后一次摇号,并在结束时提现。对于第一次提现,她有 $\frac{1}{4}$ 的概率只获得一张奖券(在已知第一次摇号结果大于 $\frac{1}{2}$ 的情况下,前两次摇号之和不超过 $1$ 的概率),有 $\frac{3}{4}$ 的概率获得两张奖券。期望的奖券数量为 $1 + 2 \cdot \frac{3}{4} + 1 \cdot \frac{1}{4} = 2.75$。

每种情况发生的概率均为 $\frac{1}{2}$,因此该策略的总期望值为 $\frac{1}{2}(2.5 + 2.75) = 2.625$。

在第二个测试用例中,Lucy 可以在每次摇号后都进行提现,每次平均获得 $2$ 张奖券。

在第三个测试用例中,Lucy 只能提现一次,她应该在全部 $7$ 次摇号后进行提现。

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.