QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 2048 MB Points totaux : 25

#2718. 人为错误

Statistiques

Justin 和 Donald 正在玩他们最喜欢的游戏:跳棋。你可能没听说过它,但规则非常简单。

棋盘是一个矩形网格,每个方格最初恰好有一个玩家的棋子。Justin 的棋子用 $J$ 表示,Donald 的棋子用 $D$ 表示。每个玩家最初在网格上至少有一个棋子。

游戏由 Justin 先手。在每一回合中,玩家可以将自己的一枚棋子移动到相邻的棋子上进行捕获(从而将其从棋盘上移除,不一定是对手的棋子)。如果一枚棋子 $X$ 位于另一枚棋子 $Y$ 的上、下、左或右方,则称 $X$ 与 $Y$ 相邻。如果无法进行这样的移动,则当前行动的玩家输掉比赛。

在理想世界中,Justin 和 Donald 都是完美的逻辑学家,能够为任何棋盘局面辨别出最优策略。那么我们可能会对他们两人中谁会获胜感兴趣。但这并不现实。实际上,在游戏时,Justin 和 Donald 都能想出相对较好的解决方案;他们表现得有多好取决于他们各自的误差因子,分别为 $J$ 和 $D$。

形式上,误差因子为 $A$ 的当前行动玩家首先选择一个建议集合(proposal set):如果可能移动的总数小于或等于 $A$,则该集合为所有可能移动的集合;如果可能移动的总数大于 $A$,则该集合为所有可能移动集合的一个大小为 $A$ 的子集。然后,玩家从这个建议集合中以相等的概率随机选择一个移动。

当两名玩家可以选择他们的建议集合时,他们都会选择最优化该集合(即产生最高获胜概率的集合),并假设对方也总是最优地选择他们的建议集合。

那么,给定初始棋盘、$J$ 和 $D$,Justin 赢得跳棋游戏的概率究竟是多少?

输入格式

输入的第一行包含两个空格分隔的正整数 $R, C$ ($R \cdot C \le 13$)。接下来的 $R$ 行包含由 $\{J, D\}$ 中的字符组成的字符串,描述初始棋盘状态。最后一行包含两个空格分隔的整数 $J, D$ ($1 \le J, D \le 13$)。

输出格式

输出一个四舍五入到小数点后 3 位的浮点数:Justin 获胜的概率。

样例

样例输入 1

1 3
JJD
3 1

样例输出 1

0.667

说明 1

注意 Justin 有 3 种可能的移动(注意下文中的 _ 表示空单元格):

  • 他将第一枚棋子向右移动,捕获第二枚棋子,导致棋盘变为 _JD,从而确保他输掉比赛;
  • 他将第二枚棋子向右移动,捕获 Donald 的棋子并确保胜利,棋盘变为 J_J
  • 或者他将第二枚棋子向左移动,捕获自己的棋子,但导致 Donald 无法移动,从而也获胜,棋盘变为 J_D

显然,后两种情况是最优的——但由于 Justin 的误差因子为 3,他有 1/3 的概率选择导致他输掉比赛的选项。因此他获胜的概率为 2/3。

样例输入 2

2 2
JJ
DD
3 1

样例输出 2

0.000

说明 2

Justin 没有获胜的希望。

为了明白原因,请注意 Justin 有 4 种可能的首步移动:

J_  _J  J_  _J
DD  DD  DJ  JD

他可以从上述移动中选择任何大小为 3 的子集。

然而,Donald 总是会选择他最优化的一步。无论 Justin 的首步移动如何,Donald 都会将棋盘留为以下配置之一:

D_  _J  _D  J_
_D  D_  D_  _D

所有这些都会导致 Justin 输掉比赛。

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.