QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#3413. 纸牌魔术

Statistics

我正在学习魔术以给我的女朋友 Alice 留下深刻印象。我最近的魔术是一个概率魔术,也就是说,它在大多数情况下有效,但并非总是有效。为了表演这个魔术,我首先洗好一副有很多张扑克牌的牌,并将它们正面朝上排成一行放在桌子上。然后,Alice 秘密地从前十张牌中选择一张(即她选择了一个 $x_0$,一个 $1$ 到 $10$ 之间的秘密数字),并按如下方式重复跳牌:在选择了位置 $x_i$ 处的一张牌(牌面数值为 $c(x_i)$)后,她将选择位置 $x_{i+1} = x_i + c(x_i)$ 处的牌。其中,J、Q 和 K 计为 $10$,A 计为 $11$。你可以假设桌上至少有十张牌。

Alice 一旦发现位置 $x_i + c(x_i)$ 处没有牌,就会停止此过程。然后,我从一个随机选择的起始位置开始执行相同的过程,该位置可能与 Alice 选择的位置不同。结果往往是我最终停在同一个位置。Alice 对这个魔术印象非常深刻。

然而,我更感兴趣的是其背后的数学原理。给定我随机选择的起始位置以及每一张被选中牌的牌面(包括最后一张),你能计算出 Alice 选择的起始位置最终停在同一张牌上的概率吗?你可以假设她的起始位置是在 $1$ 到 $10$ 之间均匀随机选择的。我忘记记录我跳过的牌,所以这些牌是未知的。你可以假设每一张未知牌的牌面都独立于其他牌面,且在所有可能的牌面(即 2-10、J、Q、K 和 A)中均匀随机分布。

图 1 – 第一个样例输入的说明:我的起始位置是 2,所以我从那张牌开始选择。然后我根据牌面数值不断跳牌。这个过程一直迭代,直到没有足够的牌可以跳(在本例中为 Q)。由于 Q 计为 10,最终的 Q 牌后面跟着 0 到 9 张未知的牌。

输入格式

对于每个测试用例: 一行包含两个整数 $n$ ($1 \le n \le 100$) 和 $m$ ($1 \le m \le 10$),其中 $n$ 是被选中牌的数量,$m$ 是我第一次选中牌的 1-based 位置。 一行包含 $n$ 个标记,按顺序指定了 $n$ 张被选中的牌面(包括最后一张)。每张牌面要么给出一个整数 $x$ ($2 \le x \le 10$),要么给出一个字符(J、Q、K 或 A,如上所述)。

输出格式

对于每个测试用例,输出一行,包含 Alice 选择的起始位置最终停在同一张牌上的概率。你的输出绝对误差应不超过 $10^{-7}$。

样例

输入 1

5 2
2 3 5 3 Q
1 1
A
1 2
A
1 10
A
6 1
2 2 2 2 2 2
7 1
2 2 2 2 2 2 2
3 10
10 J K

输出 1

0.4871377757023325348071573
0.1000000000000000000000000
0.1000000000000000000000000
0.1748923357025314239697490
0.5830713210321767445117468
0.6279229611115749556280350
0.3346565827603272001891974

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.