QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 2048 MB Puntuación total: 100

#3986. 集卡

Estadísticas

最近,各种免费游玩的集换式卡牌游戏变得非常流行。这些卡牌游戏通常包含 $n$ 张玩家想要收集的卡牌。玩家首先会获得一个包含 $s$ 张卡牌的初始卡包,保证其中没有重复的卡牌(它们都是唯一的)。之后,玩家可以通过以下两种方式获取新卡牌:

  1. 用任意 $d$ 张卡牌换取一张玩家自选的卡牌。这个过程非常快,在本题中,我们假设其耗时为零。
  2. 游玩一小时游戏,并以 $p_i$ 的概率赢得一个包含 $k$ 张卡牌的卡包,其中 $i$ 是玩家当前拥有的不同卡牌数量。卡包中的卡牌是从总共 $n$ 张卡牌的集合中独立且均匀随机抽取的(因此可能包含也可能不包含重复卡牌)。

当然,拥有更多的卡牌意味着玩家赢得卡包的概率更高,从而能更快地获得随机卡牌。

吝啬的 Larry 一直在玩这类卡牌游戏。Larry 刚刚拿到了一份这样的游戏(正准备打开他的 $s$ 张卡牌的初始卡包),并希望集齐整套卡牌。假设 Larry 对他的收集过程进行了最优管理,他完成收集所需的最短期望时间是多少?

输入格式

输入的第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试用例的数量。每个测试用例的第一行包含四个整数 $n$ ($1 \le n \le 100$),表示卡牌总数;$s$ ($0 \le s \le n$),表示初始拥有的卡牌数量;$k$ ($1 \le k \le 10$),表示一个卡包中的卡牌数量;以及 $d$ ($1 \le d \le 100$),表示换取一张新卡牌所需的卡牌数量。测试用例的下一行包含 $n + 1$ 个以空格分隔的实数 $p_0, p_1, \dots, p_n$ ($0.01 \le p_i \le 1$),表示 Larry 在游玩一小时后赢得卡包的概率。你可以假设 $p_i$ 是非递减的。

输出格式

对于每个测试用例,输出 Larry 完成收集所需的最短期望时间(以小时为单位)。如果答案的绝对误差或相对误差不超过 $10^{-7}$,则视为正确。

样例

样例输入 1

2
1 0 1 1
0.25 1.0
10 2 5 5
0.01 0.1 0.2 0.3 0.4 0.5 0.5 0.5 0.5 0.5 1.0

样例输出 1

4.000000000
10.185962459

说明

在第一个测试用例中,Larry 平均需要游玩四个小时才能赢得他完成收集所需的唯一一张卡牌。

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.