#icpc2012autumnb. [icpc2012autumn_b]Texas hold 'em

[icpc2012autumn_b]Texas hold 'em

问题陈述

抱歉,更新问题陈述。(14:40)```

_德州扑克(Texas hold 'em)_ 是标准扑克游戏之一,起源于美国德克萨斯州。它使用一副标准的52张牌,包括4种花色(黑桃、红心、方块和梅花)和13种级别(A、K、Q、J以及10到2),没有大小王。

除了下注外,游戏进程如下所述。

每位玩家在开始时被发两张脸朝下的牌,这些牌称为_底牌_或_口袋牌_,直到摊牌时不需要公开。然后,发牌人发三张面朝上的共享牌,即所有玩家共同使用的牌。这三张牌称为_翻牌_。翻牌后,再发一张叫做_转牌_的共享牌,然后再发一张叫做_河牌_的共享牌。

河牌之后,游戏进入_摊牌_阶段。所有玩家在这个阶段都会展示他们的底牌。然后,每个玩家从七张牌中选择五张,即他们的两张底牌和五张共享牌,来组成一手_牌型_。组成最强牌型的玩家获胜。共有十种可能的牌型,从最强到最弱依次为:

*   _皇家同花顺_:A、K、Q、J和10,且花色相同。这是同花顺的特殊情况。
*   _同花顺_:五张连续的牌(例如7、6、5、4和3),且花色相同。
*   _四条_:四张相同级别的牌。
*   _葫芦_:三张相同级别的牌,加上一对其他级别的牌。
*   _同花_:五张花色相同的牌,但不连续。
*   _顺子_:五张连续的牌,但花色不同。
*   _三条_:只有三张相同级别的牌。
*   _两对_:两张相同级别的牌,再加上另外两张相同级别的牌。
*   _一对_:只有一对级别相同的牌。
*   _高牌_:任何其他的手牌。

在判断牌型时,J、Q和K分别看作11、12和13。A既可以看作比K高一级,也可以看作比2低一级,因此A-K-Q-J-10和5-4-3-2-A都是可能的顺子(但3-2-A-K-Q之类的顺子不是)。

如果有多个玩家拥有相同牌型,将通过比较牌的级别来决定胜负。基本原则是先比较形成牌型的牌(对子、三条或四条),然后逐张比较其余牌,从最高级别到最低级别,直到胜负分出。具体而言:

*   _皇家同花顺_:(不分胜负)
*   _同花顺_:比较最高级别的牌。
*   _四条_:比较四张牌,然后比较剩下的一张。
*   _葫芦_:比较三张牌,然后比较对子。
*   _同花_:逐张比较所有牌。
*   _顺子_:比较最高级别的牌。
*   _三条_:比较三张牌,然后比较剩下的两张。
*   _两对_:比较高级别的一对,然后是低级别的一对,最后是最后一张牌。
*   _一对_:比较对子,然后比较剩下的三张牌。
*   _高牌_:逐张比较所有牌。

级别的顺序为A、K、Q、J、10、9、...、2,从高到低,除了在顺子中将A视为比2低之外。请注意,仍然存在一些特殊情况下的平局。另请注意,花色在平局时不考虑。

以下是一些比较的示例(请注意,这些示例仅用于说明目的;在德州扑克中有些组合是不可能发生的):

*   J-J-J-6-3 和 K-K-Q-Q-8。
    

前者胜出,因为三条比两对更强。

*   J-J-J-6-3 和 K-Q-8-8-8。
    

由于都是三条,首先比较三张牌,本例中为J和8。J更大,因此前者是更强的手牌。剩下的牌,6-3和K-Q,在平局已经分出胜负之后就不再考虑。

*   Q-J-8-6-3 和 Q-J-8-5-3。
    

两者都是高牌,假设没有同花。最高级别的三张牌Q-J-8是相同的,因此比较第四高的牌。前者更强,因为6比5大。

*   9-9-Q-7-2 和 9-9-J-8-5。
    

两者都是一对,且对子级别相同(9)。因此,剩下的牌Q-7-2和J-8-5将从最高到最低进行比较,前者胜出,因为Q比J大。

现在假设你正在与一个对手玩德州扑克游戏,并且已经发放了底牌和翻牌。你有一种惊人的超能力,可以知道对手的牌。然而,你的能力不足以预测转牌和河牌是什么。

你的任务是编写一个程序,计算你赢得游戏的概率,假设转牌和河牌从剩余的牌中均匀随机选择。你和对手总是选择最强的牌型。计算时应排除平局,即不计入胜利或失败。计算时应包括平局,即计入失利。

* * *

### 输入

输入由多个数据集组成,每个数据集具有以下格式:

$YourCard_1$ $YourCard_2$
$OpponentCard_1$ $OpponentCard_2$
$CommunityCard_1$ $CommunityCard_2$ $CommunityCard_3$

每个数据集由三行组成。第一行和第二行分别包含你的底牌和对手的底牌。第三行包含翻牌,即前三张共享牌。这些牌之间用空格分隔。

每张牌由两个字符表示。第一个字符表示花色:`S`(黑桃)、`H`(红心)、`D`(方块)或`C`(梅花)。第二个字符表示级别:`A`、`K`、`Q`、`J`、`T`(10)或`9`-`2`。

输入的末尾由一行包含`#`表示。这行不应被处理。

### 输出

在一行中打印概率。该数字可能包含小数点后任意多的位数,但绝对误差应不大于$10^{-6}$。

* * *

### 示例输入

```plain

SA SK
DA CA
SQ SJ ST
SA HA
D2 C3
H4 S5 DA
HA D9
H6 C9
H3 H4 H5
#

示例输出


1.00000000000000000000
0.34444444444444444198
0.63030303030303025391

来源

JAG Practice Contest for ACM-ICPC Asia Regional 2012