QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 256 MB 満点: 100

#4859. 扑克游戏:构造

統計

Alice 和 Bob 发明了一种基于德州扑克的新游戏。请仔细阅读以下规则,因为它们与常规规则不同。本题的背景与题目 D 完全相同。

共有 13 个点数,从高到低依次为 A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2。共有 4 种花色,分别为 S, H, C, D。每种点数和花色的组合恰好出现一次,因此共有 $52 (= 13 \times 4)$ 张牌。

一手牌由五张牌组成。每手牌都有一个牌型。共有 10 种牌型,每种牌型也有等级。如果两手牌的牌型不同,牌型等级高的手牌总是更大。一手牌可以用序列 $(r_1, r_2, r_3, r_4, r_5)$ 表示,其中 $r_i$ 是第 $i$ 张牌的点数,五张牌的顺序取决于牌型。如果两手牌的牌型相同,则序列字典序更大的手牌更大:形式上,如果我们找到最小的索引 $i$ 使得两手牌的 $r_i$ 不同,则 $r_i$ 更大的手牌更大。如果两手牌的牌型和序列 $r$ 都相同,则两手牌等级相同。

以下是 10 种牌型,按等级从低到高排列。如果一手牌符合多种牌型的模式,则它属于等级最高的那种。

  • 高牌 (Highcard):任意五张牌。序列 $r$ 满足 $r_1 > r_2 > r_3 > r_4 > r_5$。
  • 对子 (Pair):两张点数相同的牌。序列 $r$ 满足 $r_1 = r_2, r_3 > r_4 > r_5$。
  • 两对 (Two pairs):两张点数相同的牌和另外两张点数相同的牌。序列 $r$ 满足 $r_1 = r_2 > r_3 = r_4$。
  • 三条 (Three of a kind):三张点数相同的牌。序列 $r$ 满足 $r_1 = r_2 = r_3, r_4 > r_5$。
  • 顺子 (Straight):五张点数连续的牌。序列 $r$ 满足 $r_1 > r_2 > r_3 > r_4 > r_5$。此外,A 2 3 4 5 也是顺子,在这种情况下 A 被视为比 2 小的点数。因此 A 2 3 4 5 是点数最小的顺子。
  • 同花 (Flush):五张花色相同的牌。序列 $r$ 满足 $r_1 > r_2 > r_3 > r_4 > r_5$。
  • 葫芦 (Full house):三张点数相同的牌和另外两张点数相同的牌。序列 $r$ 满足 $r_1 = r_2 = r_3, r_4 = r_5$。
  • 四条 (Four of a kind):四张点数相同的牌。序列 $r$ 满足 $r_1 = r_2 = r_3 = r_4$。
  • 同花顺 (Straight flush):同花且是顺子。序列 $r$ 满足 $r_1 > r_2 > r_3 > r_4 > r_5$。此外,A 2 3 4 5 且花色相同也是同花顺,在这种情况下 A 被视为比 2 小的点数。因此 A 2 3 4 5 且花色相同是点数最小的同花顺。
  • 皇家同花顺 (Royal flush):点数为 T, J, Q, K, A 的同花顺。四种不同的皇家同花顺等级相同。

Alice 和 Bob 每人发两张牌。与常规规则不同,这里会发出 6 张公共牌。两位玩家轮流从公共牌中取牌,直到每人都有五张牌,组成一手牌。Alice 先取。拥有等级更高的手牌的玩家获胜。如果两手牌等级相同,则为平局。注意,所有十张牌对双方都是可见的,且他们总是采取最优策略。

以上规则与题目 D 相同。本题的任务如下:

给定 Alice 的牌和 Bob 的牌,找出 6 张可能的公共牌,使得 Alice 获胜、Bob 获胜,以及出现平局。

输入格式

输入包含多个测试用例。第一行包含一个整数 $T (1 \le T \le 10^5)$,表示测试用例的数量。对于每个测试用例: 第一行包含两个字符串 $a_1$ 和 $a_2$:Alice 的初始牌。 第二行包含两个字符串 $b_1$ 和 $b_2$:Bob 的初始牌。 第三行包含六个字符串 $c_1, c_2, c_3, c_4, c_5$ 和 $c_6$:公共牌。

每个字符串长度为 2。第一个字符是 “A”, “K”, “Q”, “J”, “T”, “9”, “8”, “7”, “6”, “5”, “4”, “3”, “2” 之一,代表牌的点数。第二个字符是 “S”, “H”, “C”, “D” 之一,代表牌的花色。

保证给定的 4 张牌两两不同。

输出格式

对于每个测试用例: 针对三个问题各打印一行:如何让 Alice 获胜,如何让 Bob 获胜,以及如何让游戏以平局结束。对于每个问题,如果可能,输出 “YES” 以及代表 6 张牌的 6 个字符串;否则,输出 “NO”。

输出中牌的格式应与输入中的格式相同。 输入和输出中的所有 10 张牌必须两两不同。

样例

样例输入 1

3
JC 4H
TS 5D
7C 3C
7H TH
2D KH
4D JC

样例输出 1

YES JS JH JD 4S 4C 4D
YES TH TC TD 5S 5H 5C
YES 4S JS 5S TH TC TD
YES 3S 3H 3D 2C 4H 5S
YES 2H 4H 5H 6H 8H 9H
YES TS 3S 2S 2H 4C 4D
YES 2S 2H 2C KS KC KD
YES 4S 4H 4C JS JH JD
YES 2S KS 4S JS JH JD

样例输入 2

2
AS AH
AC AD
AS AH
2S 2H

样例输出 2

YES 2H 3S 4D 5C 6H 7S
NO
YES 2C 2D 3S 3H 4C 4D
YES AC AD 3D 4C 5H 6S
YES 2C 2D 3D 4C 5H 6S
NO

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.