#P17151. 今晚吃春天

今晚吃春天

1003. 今晚吃春天

题目描述

提示:本题中的斗地主游戏可能与实际情况不同,请参赛选手务必仔细阅读题目描述。

“四人斗地主”是普通斗地主游戏的变体。玩家一共有四人,其中一人是地主,其余三人是农民,记为一、二、三号农民。四人共持有总计 108108 张扑克牌。这 108108 张牌由两张“大王”、两张“小王”和 104104 张点数牌组成。每张点数牌拥有一个不超过 1313 的正整数,称为点数,从小到大依次用字符 3456789TJQKA2 表示,例如 3 对应的点数是 11T 对应的点数是 882 对应的点数是 1313。每种点数牌各有 88 张,共计 104104 张。在此基础上,规定“小王”的点数为 1414,“大王”的点数为 1515,这两种牌分别用字符 wW 表示。这样,每一张扑克牌都有对应的点数和符号了。

游戏开始时,地主拥有 3333 张牌,三位农民每人拥有 2525 张牌。游戏将进行若干回合,直到有人出完手中所有的牌:

  • 每回合的首发者先出牌(游戏开始时,首发者是地主)。
  • 每回合的首发者必须从自己拥有的牌中挑选若干张打出,且出的牌必须组成一种合法牌型(见下文)。出过的牌将被弃置不再使用。
  • 接下来按照顺序,玩家依次选择是否跟出牌。例如若首发者是地主,那么接下来依次询问一号农民、二号农民、三号农民、地主、一号农民、二号农民、三号农民,以此类推。注意同一人可以在同一回合中多次出牌。
  • 如果某位玩家跟出牌,那么必须从自己拥有的牌中挑选若干张打出,所出的牌必须也组成一种合法牌型,且必须比上一位出牌者出的牌更大(见下文)。出过的牌将被弃置不再使用。
  • 如果某一时刻,有连续三位玩家均选择不出牌,本回合结束,最后一位出牌的玩家成为下一回合的首发者。
  • 如果在某一回合的某一次出牌中,出牌者出完了手中所有的牌,那么游戏立即结束,该玩家所属的阵营获胜。

四人斗地主一共有十类合法牌型:

  • 单张 S(a) \text{S}(a) :由一张点数为 aa 的牌组成,满足 1a151\le a\le 15
  • 对子 D(a) \text{D}(a) :由两张点数为 aa 的牌组成,满足 1a151\le a\le 15
  • 三张 T(a) \text{T}(a) :由三张点数为 aa 的牌组成,满足 1a131\le a\le 13
  • 三带二 C(a,b) \text{C}(a,b) :由三张点数为 aa 和两张点数为 bb 的牌组成,满足 aba \neq b1a131\le a\le 131b151\le b\le 15
  • 顺子 SS(l,r) \text{SS}(l,r) :由点数为 llrr 中的牌组成,每种各一张,满足 5l+4r125 \le l+4 \le r \le 12
  • 连对 SD(l,r) \text{SD}(l,r) :由点数为 llrr 中的牌组成,每种各两张,满足 3l+2r123 \le l+2 \le r \le 12
  • 钢板 ST(l,r) \text{ST}(l,r) :由点数为 llrr 中的牌组成,每种各三张,满足 2l+1r122 \le l+1 \le r \le 12
  • 飞机 SC(l,r,P) \text{SC}(l,r,P) :由点数为 llrr 中的牌组成,每种各三张,满足 2l+1r122 \le l+1 \le r \le 12;外加 rl+1r-l+1 个对子 $P=\{\text{D}(x_1),\text{D}(x_2),\cdots,\text{D}(x_{r-l+1})\}$。注意:x1,x2,,xrl+1x_1,x_2,\cdots,x_{r-l+1} 不必互不相同,也允许为 llrr 中的点数。也就是说,一共有 5(rl+1)5(r-l+1) 张牌。
  • 炸弹 B(x,a) \text{B}(x,a) :由 xx 张点数为 aa 的牌组成,满足 4x84\le x\le 81a131\le a\le 13
  • 王炸:由两张“大王”、两张“小王”组成。

可以得知,每种合法牌型恰好属于上面十种类型中的一种。

合法牌型 XX 要想比合法牌型 YY 大,需要满足下面的条件:

  • 王炸比所有其余合法牌型都大。一整场游戏中只能有一个王炸,因此比较王炸之间的大小没有意义。
  • 炸弹比不是炸弹或王炸的合法牌型大。
  • 对于两个炸弹 X=B(x1,a1) X=\text{B}(x_1,a_1) Y=B(x2,a2) Y=\text{B}(x_2,a_2) XXYY 大的充要条件为 x1>x2x_1>x_2 或者 x1=x2x_1=x_2a1>a2a_1>a_2
  • 对于前八类合法牌型,不同类之间不能比较大小。也就是说,不能拿与上一个人出的牌不同类的前八类牌型来接牌。
  • 对于两个单张 X=S(a1) X=\text{S}(a_1) Y=S(a2) Y=\text{S}(a_2) 、两个对子 X=D(a1) X=\text{D}(a_1) Y=D(a2) Y=\text{D}(a_2) 或两个三张 X=T(a1) X=\text{T}(a_1) Y=T(a2) Y=\text{T}(a_2) XXYY 大的充要条件为 a1>a2a_1>a_2
  • 对于两个三带二 X=C(a1,b1) X=\text{C}(a_1,b_1) Y=C(a2,b2) Y=\text{C}(a_2,b_2) XXYY 大的充要条件为 a1>a2a_1>a_2。也就是说,三带二牌型比较大小只看三张的部分,不看两张的部分。三张部分一样大的三带二牌型视为相等,无论两张部分是否一样大。
  • 对于两个顺子 X=SS(l1,r1) X=\text{SS}(l_1,r_1) Y=SS(l2,r2) Y=\text{SS}(l_2,r_2) 、两个连对 X=SD(l1,r1) X=\text{SD}(l_1,r_1) Y=SD(l2,r2) Y=\text{SD}(l_2,r_2) 或两个钢板 X=ST(l1,r1) X=\text{ST}(l_1,r_1) Y=ST(l2,r2) Y=\text{ST}(l_2,r_2) ,若 r1l1r2l2r_1-l_1 \neq r_2-l_2,则 XXYY 不能比较大小;否则,XXYY 大的充要条件为 r1>r2r_1>r_2
  • 对于两个飞机 X=SC(l1,r1,P1) X=\text{SC}(l_1,r_1,P_1) Y=SC(l2,r2,P2) Y=\text{SC}(l_2,r_2,P_2) ,若 r1l1r2l2r_1-l_1 \neq r_2-l_2,则 XXYY 不能比较大小;否则,XXYY 大的充要条件为 r1>r2r_1>r_2。也就是说,飞机牌型比较大小只看连续三张的部分,不看剩余两张的部分。连续三张部分一样大的飞机牌型视为相等,无论剩余两张部分是否一样大。

现在 Silvefish 当上了地主,并得到了属于他的 3333 张牌。真是一手好牌啊!Silvefish 想起了“春天”。“春天”是四人斗地主中的一种特殊现象,指从游戏开始到游戏结束的过程中,所有农民均未打出任何一张牌。现在他想知道,他是否有 100%100\% 的把握打出“春天”。他不知道农民手里的牌,所以这意味着他需要有一种出牌策略,使得无论农民剩余的 7575 张牌如何分成三份(每份 2525 张牌)给农民,他都一定能打出“春天”。可以认为农民们都非常希望出牌,只有他们真的无法打出任何牌时,才会选择不出。可惜手里的牌太多了,他算不过来。你能告诉他答案吗?

输入格式

本题包含多组测试数据。

首先在第一行输入一个整数 TT1T5×1041\le T\le 5\times10^4)表示测试数据组数。

接下来对于每一组测试数据:

输入包含一行一个长度为 3333 的字符串,表示 Silvefish 作为地主拿到的 3333 张牌。保证字符串中的所有字符均为 Ww2AKQJT9876543 中的字符,且按照该顺序(也就是点数从大到小)依次输入,含义见题面描述。

保证每一组测试数据都是合法的地主开局手牌。

输出格式

对于每一组测试数据,如果 Silvefish 有 100%100\% 的把握打出“春天”,那么输出一行一个字符串 Yes,否则输出一行一个字符串 No

样例输入

2
WW22222222AAKKQQTT777666555444333
W22AAKKQQQJJJTTT99988775544443333

样例输出

Yes
No

提示

样例包含两组测试数据。

在第一组测试数据中,Silvefish 可以选择先打出炸弹 B(8,13) \text{B}(8,13) (也即 22222222),农民无法接牌;然后再将剩余的 2525 张牌作为飞机 $\text{SC}(1,5,\{\text{D}(8),\text{D}(10),\text{D}(11),\text{D}(12),\text{D}(15)\})$(也即 WWAAKKQQTT777666555444333)一次性打出,从而达成“春天”。

第二组测试数据取自真实生活中的一局四人斗地主,可以证明在这种情况下 Silvefish 无法达成“春天”。

来源:2026杭电多校-测试专用(南外) 原题链接:http://acm.hdu.edu.cn/contest/problem_show.php?cid=1235&pid=1003