#L6819. 「THUPC 2022」简单的卡牌游戏

「THUPC 2022」简单的卡牌游戏

题目描述
Alice 和 Bob 最近玩了很多复杂的游戏,于是他们想玩点简单的游戏放松一下。

他们想起来有一种非常简单的游戏叫“憋七”,这种游戏只需要一副扑克牌就能玩。传统的“憋七”玩法稍微有点复杂,所以 Alice 和 Bob 打算玩一种简化版的“憋七”。

在游戏中用到的扑克牌包括黑桃(Spades)、红桃(Hearts)、梅花(Clubs)和方块(Diamonds)四种花色,每种花色的 11 点至 1313 点各 11 张,共计 5252 张牌。

简化版的游戏规则如下:

  • 首先将一副 5252 张的扑克牌平均分成两份,每份各 2626 张,Alice 和 Bob 各拿一份;
  • 拥有黑桃 77 的一方将手中的黑桃 77 置于场上;
  • 接着,从另外一方开始轮流操作,每一轮玩家需要从自己持有的牌中挑选一张置于场上,可以打出的牌需要满足以下两个条件之一:
    1. 这张牌的点数为 77
    2. 当前场上的牌中,有一张牌与将要打出的牌花色相同,点数恰好差 11
  • 如果当前进行操作的玩家不能按照规则打出一张牌,则判该玩家负,另一位玩家胜;否则,如果双方都打出了手上的所有牌,则判平局。

由于该游戏中不同花色的接龙是独立的,游戏时玩家常常将不同花色的 77 对成一竖排列,并在 77 的两侧接龙,将同花色的牌排成一行。

已知 Alice 和 Bob 都足够聪明。现在给出 Alice 的初始手牌,请计算当二人都按最优策略出牌时,游戏的结果。


输入格式
由于可以从一个人的手牌推断出另一个人的手牌,因此输入仅包含 Alice 的所有手牌。

输入仅一行,包括 2626 个用空格隔开的字符串,每个字符串表示 Alice 手上的一张牌。

每张牌的输入格式为 花色 + 点数。其中,花色由一个字符表示,S 表示黑桃,H 表示红桃,C 表示梅花,D 表示方块;点数由对应的一位或两位的数字表示,数字最小为 11,最大为 1313,均不含前导 00。例如,黑桃 77 对应字符串 S7


输出格式
输出仅一行,包括一个字符串,表示游戏的结果。如果 Alice 能赢得这局游戏则输出 Alice;如果 Bob 能赢得这局游戏则输出 Bob;如果平局则输出 Draw


样例 1
输入

S4 S6 S11 S13 H3 H4 H5 H6 H8 H10 H12 C2 C4 C5 C6 C8 C9 C11 C13 D1 D4 D5 D6 D8 D10 D12

输出

Bob

样例 2
输入

S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13

输出

Draw

样例 3
输入

H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 C13 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13

输出

Alice

数据范围与提示
对于 100%100\% 的数据,保证输入的牌符合输入格式中描述的格式,且输入的 2626 张牌各不相同。

来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2022。

题解等资源可在 https://github.com/THUSAAC/THUPC2022-Final 查看。