QOJ.ac

QOJ

حد الوقت: 8 s حد الذاكرة: 256 MB مجموع النقاط: 100

#1862. 德州扑克

الإحصائيات

德州扑克(Texas hold 'em,也称为 Texas holdem, hold 'em, holdem)是最流行的扑克变种之一。请阅读以下规则,因为它们可能与常规规则不同。

现在,Alice 和 Bob 两人正在玩德州扑克。在每局游戏开始时,每位玩家持有两张牌,称为底牌(hole cards)。在本题中,与常规德州扑克中底牌面朝下不同,两位玩家都知道所有四张底牌。随后,五张公共牌分三个阶段面朝上发出。这些阶段包括三张牌(“翻牌圈”,the flop),随后是一张额外的牌(“转牌”,the turn 或“第四街”),以及最后一张牌(“河牌”,the river 或“第五街”)。所有玩家都知道已经发出的面朝上的牌。

所有牌均从一副标准的 52 张扑克牌中抽出。一副标准的 52 张牌包含四种花色:梅花(♣)、方块(♦)、红桃(♥)和黑桃(♠),每种花色有 13 个点数。每种花色包括 Ace (A)、King (K)、Queen (Q) 和 Jack (J),以及从 2 到 10 的数字牌。每张牌最多只能被抽出一次。

单张牌的点数排名如下(从高到低):Ace, King, Queen, Jack, 10, 9, 8, 7, 6, 5, 4, 3, 2。每位玩家从七张牌(五张公共牌和两张底牌)的任意组合中寻求最好的五张牌组合。

下表按价值递增的顺序展示了可能的五张牌牌型。每种牌型都有特定的五张牌排序方式,如下所述。以下部分描述了如何比较两手牌,这与常规规则相同。

  • 高牌 (Highcard):牌的简单数值。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 > a_2 > a_3 > a_4 > a_5$。 此处及下文中,$a_i$ 表示第 $i$ 张牌的点数。注意,虽然此处的图片展示了牌型的示例,但图片中的牌可能尚未按正确顺序排列。

  • 对子 (Pair):两张点数相同的牌。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 = a_2$,$a_3 > a_4 > a_5$,$a_1 \neq a_3$,$a_1 \neq a_4$ 且 $a_1 \neq a_5$。

  • 两对 (Two pairs):两组两张点数相同的牌。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 = a_2$,$a_3 = a_4$,$a_1 > a_3$,$a_1 \neq a_5$ 且 $a_3 \neq a_5$。

  • 三条 (Three of a kind):三张点数相同的牌。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 = a_2 = a_3$,$a_4 > a_5$,$a_1 \neq a_4$ 且 $a_1 \neq a_5$。

  • 顺子 (Straight):五张点数递增的序列。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得对于所有 $1 \le i \le 4$,$a_i$ 的点数恰好比 $a_{i+1}$ 高一级。特殊情况下,如果 $a_5$ 是 Ace,$a_4$ 可以是 2。在这种情况下,Ace 被视为比 2 低一级。

  • 同花 (Flush):五张花色相同的牌。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得所有五张牌花色相同且 $a_1 > a_2 > a_3 > a_4 > a_5$。

  • 葫芦 (Full house):三条和一对的组合。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 = a_2 = a_3$ 且 $a_4 = a_5$。

  • 四条 (Four of a kind):四张点数相同的牌。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得 $a_1 = a_2 = a_3 = a_4$。

  • 同花顺 (Straight flush):同花色的顺子。牌按 $a_1 a_2 a_3 a_4 a_5$ 排序,使得所有五张牌花色相同,且对于所有 $1 \le i \le 4$,$a_i$ 的点数恰好比 $a_{i+1}$ 高一级。特殊情况下,如果 $a_5$ 是 Ace,$a_4$ 可以是 2。在这种情况下,Ace 被视为比 2 低一级。

比较两手牌时,首先比较两手牌的牌型。例如,当一手牌是四条,另一手牌是葫芦时,四条总是胜过葫芦。

如果两手牌的牌型相同,则比较牌的点数。我们将按上述方式对牌进行排序,并逐一比较。首先比较第一张牌。如果一手牌的第一张牌点数更高,则该手牌获胜。如果两手牌的第一张牌点数相同,则比较第二张牌,依此类推。如果所有位置的牌点数都相同,则平局。牌的花色在比较中从不考虑。例如,♣5, ♦5, ♥5, ♠2, ♣2 胜过 ♦3, ♠3, ♥3, ♦A, ♥A:因为它们都是葫芦,我们首先比较三条的点数,发现 $5 > 3$。

考虑 Alice 的底牌是 ♣A, ♦4,Bob 的底牌是 ♥2, ♠3 的情况。公共牌是 ♠A, ♥4, ♠5, ♣Q, ♥Q。Alice 的最佳牌型(从她的底牌和公共牌中选出五张)是 ♣A, ♠A, ♣Q, ♥Q, ♠5,即两对。Bob 的最佳牌型是 ♠5, ♥4, ♠3, ♥2, ♠A,即顺子。因此,Bob 获胜。

玩家在每一轮有四种选择:让牌(check)、跟注(call)、加注(raise)或弃牌(fold)。

游戏流程如下: 1. 阶段 1:52 张牌随机洗牌。 前两张牌面朝上作为 Alice 的底牌。 第三和第四张牌面朝上作为 Bob 的底牌。 第五、六、七张牌面朝下作为翻牌。 第八张牌面朝下作为转牌。 * 第九张牌面朝下作为河牌。 然后,Alice 和 Bob 都下注 $w$ 美元,且两人手中各有 $m$ 美元。 2. 阶段 2:开始下注轮,Alice 和 Bob 轮流下注。 3. 阶段 3:翻牌面朝上,随后开始下注轮。 4. 阶段 4:转牌面朝上,随后开始下注轮。 5. 阶段 5:河牌面朝上,随后开始下注轮。 6. 如果上述阶段中没有玩家弃牌,则比较他们的手牌。手牌更好者获胜。如果两手牌相等,则平局。

游戏结束时,假设 Alice 下注 $a$ 美元,Bob 下注 $b$ 美元。如果平局,两位玩家各获得 $\frac{a+b}{2}$ 美元。如果有胜者,胜者获得 $a+b$ 美元,败者获得 0 美元。

如果玩家在游戏结束时手中剩余 $x$ 美元,且作为游戏结果获得了 $y$ 美元,则他/她在游戏结束时总共拥有 $x+y$ 美元。

每个下注轮流程如下: 1. Alice 的回合:Alice 做出决定。 2. Bob 的回合:Bob 做出决定。 3. 如果 Bob 选择加注,则回到 Alice 的回合。否则,下注轮结束。

每位玩家有四种可能的决定。假设当前玩家下注 $a$ 美元,另一位玩家下注 $b$ 美元(可以证明 $b$ 总是不少于 $a$)。则: check(让牌):仅当 $a = b$ 时可用。如果玩家选择让牌,则什么都不会发生。 call(跟注):仅当 $a < b$ 时可用。假设当前玩家手中还有 $c$ 美元。当玩家选择跟注时,他/她必须额外下注 $b - a$ 美元。 raise(加注):此选择总是可用。假设当前玩家手中还有 $c$ 美元。那么,他/她可以选择一个整数 $d \in (b, a + c]$,并额外下注 $d - a$ 美元。 fold(弃牌):此选择总是可用。然而,当玩家选择弃牌时,他/她将输掉游戏,游戏立即结束。

现在,阶段 1 结束:四张底牌已面朝上,两位玩家都已下注 $w$ 美元,且手中各有 $m$ 美元。假设两位玩家都采取最优策略,旨在最大化游戏结束时他们拥有的预期金额。你的任务是计算 Alice 的最大预期金额。

输入格式

第一行包含一个整数 $T(1 \le T \le 10)$,表示测试用例的数量。 对于每个测试用例,第一行包含两个整数 $w$ 和 $m$ $(0 \le w, m \le 50)$。 接下来四行,每行包含两个字符 $c$ 和 $k$,中间用空格隔开($c \in \{0, 1, 2, 3\}$,$k \in \{2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K, A\}$)。其中 $c = 0, 1, 2, 3$ 分别代表梅花(♣)、方块(♦)、红桃(♥)和黑桃(♠),$k = T$ 代表点数 10,其他 $k$ 的值代表相应的点数。 前两张牌代表 Alice 的底牌,后两张牌代表 Bob 的底牌。保证这四张牌互不相同。

输出格式

输出一行,包含一个不可约分数:问题的答案。例如,当答案为 3.5, 0, 1 或 0.999 时,你需要分别输出 7/2, 0/1, 1/1 或 999/1000。

样例

输入 1

2
10 10
0 A
1 A
2 A
3 A
10 10
0 A
1 Q
2 K
2 J

输出 1

20/1
557855/23782

Example set of 52 playing cards; 13 of each suit: clubs, diamonds, hearts, and spades

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.