408569: GYM103186 L 高低奥马哈扑克

Memory Limit:1024 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

L. 高低奥马哈扑克time limit per test3 secondsmemory limit per test1024 megabytesinputstandard inputoutputstandard output

奥马哈扑克 (Omaha Hold'em) 是一种纸牌游戏,在许多地方类似于德州扑克(Texas Hold'em)。即使你玩过德州扑克,也请仔细阅读下面的内容,因为部分规则与德州扑克不同。

一群牛逼网友在玩高低奥马哈扑克 (Omaha Hi / Lo) — 一种奥马哈扑克的变体。在游戏的一开始,每位玩家手上会有 4 张底牌。接下来,和德州扑克相同,5 张公共牌会在 3 个阶段发出。这三个阶段分别为:连续发三张(翻牌,flop),单独发一张(转牌,turn)和最后一张(河牌,river)。所有玩家都能看到发出的公共牌,但只能看到自己的底牌。所有的牌都是从去掉大小王的标准的 52 张扑克牌牌堆中抽取的。一副标准的扑克牌包含了 4 种花色 :梅花(clubs)♣,方片(diamonds)♢,红心(hearts)♡,黑桃(spades)♠;每种花色 13 张牌,包括 Ace (A),King(K), Queen(Q),Jack(J) 和 从 2 到 10 的序数牌。每张牌有且仅有一张。

单张牌的排名从大到小如下:A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3, 2。每个玩家需要从自己的底牌中选择恰好 2 张牌,从公共牌中选择恰好 3 张牌,组成最好的 5 张牌的牌型。

下面根据牌型大小升序介绍可能的 5 张牌的牌型,每种牌型中牌需按下文描述的顺序排列。下面描述的规则与常规的德州扑克相同。

  • 高牌(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 \leq i \leq 4$$$,$$$a_i$$$ 恰好比 $$$a_{i + 1}$$$ 排名高 $$$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 \leq i \leq 4$$$,$$$a_i$$$ 恰好比 $$$a_{i + 1}$$$ 排名高 $$$1$$$。特别地,如果 $$$a_5$$$ 是 Ace,$$$a_4$$$ 可以是 $$$2$$$。在这个情况下, Ace 被认为比 $$$2$$$ 的排名低。

在比较两手牌时,先比较两手牌的牌型。例如,一手牌是四条,另一手牌是葫芦,那么四条永远赢葫芦。如果两手牌的牌型一样,则比较牌的大小。我们需要将牌按上述方式排序,并一张张地比较它们的大小。即先比较第一张牌的大小,大的赢。如果第一张牌一样大,再比较第二张牌的大小,以此类推。如果所有的五张牌都一样大,则计为平手。在比较大小时,不考虑花色。例如 ♣5,♢5,♡5,♠2,♣2 可以赢 ♢3,♠3,♡3,♢A,♡A。因为它们都是三条,我们将先比较相同的三个的大小。

下面的规则是德州扑克中没有的,请仔细阅读。

在高低奥马哈扑克中,玩家还需要使用小于等于 8 的牌进行比低牌。每个玩家需要从自己的底牌中选择恰好 2 张牌,从公共牌中选择恰好 3 张牌,组成最好的 5 张不成对的牌型。如果无法使用小于等于 8 的牌组成不成对的牌型,则该玩家不参与比低牌。

注意:比高和比低是相互独立的,选择可以不同。在比低牌时的单张牌的排名从大到小为:8, 7, 6, 5, 4, 3, 2, A。按 $$$a_1, a_2, a_3, a_4, a_5$$$ 排列,满足 $$$a_1 > a_2 > a_3 > a_4 > a_5$$$。同花和顺子不影响比小。

在比较两手牌时,先比较第一张牌的大小,小的赢。如果第一张牌一样大,再比较第二张牌的大小,以此类推。如果所有的五张牌都一样大,则计为平手。因此在比小时最好的牌型是:5,4,3,2,A,最差的牌型是:8,7,6,5,4。

当游戏进行到最后的比大小阶段,当前的底池为 $$$p$$$ 个筹码。如果没有玩家能参与比低牌,则奖池全部给在比高中获胜的玩家。如果有至少一名玩家可以比低,则奖池的一半 $$$\left\lceil \frac{p}{2} \right\rceil$$$ 分给比高中获胜的玩家,奖池的另一半 $$$\left\lfloor \frac{p}{2} \right\rfloor$$$ 分给比低中获胜的玩家。

如果在比高或比低时打平需要平分底池但无法平分,多余的筹码给位置靠前的玩家。即如果底池为 $$$p$$$,给 $$$n$$$ 个人平分,则位置最靠前的玩家赢得剩余的 $$$p - \left\lfloor \frac{p}{n} \right\rfloor n$$$ 个筹码。

现在,其它玩家已经弃牌,Alice 和 Bob 进行到了最后的比大小阶段。Alice 位置靠前,底池总筹码数为 $$$p$$$。已知两人的底牌和 5 张公共牌。你需要分别计算两人最后得到的筹码数。

Input

第一行有一个整数 $$$T$$$ ($$$T \leq 500$$$),表示测试数据的个数。

对于每组数据,第一行有一个整数 $$$p$$$ ($$$10 \leq p \leq 1000$$$),表示底池的大小。第二行为 Alice 的底牌,第三行为 Bob 的底牌,第四行为公共牌。

牌之间用空格分隔,每张牌由两个字符组成,分别表示大小和花色。大小用 2,..., 9, T, J, Q, K, A 表示( T 代表序数牌 10),花色用 C, D, H, S 表示。

Output

对于每组数据,在一行输出两个整数,中间以空格分隔,分别表示 Alice 和 Bob 赢得的筹码数。

ExampleInput
2
233
KS 9H 6S 6C
AC QS JH 8S
KC KD 8C 5C TC
233
AS 2C 4H KH
AC 2D 5D 5C
2S 3H JH JD 5H
Output
233 0
116 117
Note

第一个样例中,Alice 在比高中的牌型为 ♣K,♢K,♠K,♣T,♡9(三条),Bob 在比高中的牌型为 ♣K,♢K,♣8,♠8,♣A(两对)。因此 Alice 在比高中取胜。两人均无法比低。所以 Alice 赢得所有底池。

在第二个样例中,Alice 以 ♠A,♠2,♡3,♡4,♡5 的牌型在比低中取胜,Bob 以 ♣5,♢5,♡5,♢J,♡J(葫芦) 的牌型在比高中取胜。因此两人将平分底池。

加入题单

上一题 下一题 算法标签: