#P17151. 今晚吃春天
今晚吃春天
1003. 今晚吃春天
题目描述
提示:本题中的斗地主游戏可能与实际情况不同,请参赛选手务必仔细阅读题目描述。
“四人斗地主”是普通斗地主游戏的变体。玩家一共有四人,其中一人是地主,其余三人是农民,记为一、二、三号农民。四人共持有总计 张扑克牌。这 张牌由两张“大王”、两张“小王”和 张点数牌组成。每张点数牌拥有一个不超过 的正整数,称为点数,从小到大依次用字符 3456789TJQKA2 表示,例如 3 对应的点数是 ,T 对应的点数是 ,2 对应的点数是 。每种点数牌各有 张,共计 张。在此基础上,规定“小王”的点数为 ,“大王”的点数为 ,这两种牌分别用字符 w 和 W 表示。这样,每一张扑克牌都有对应的点数和符号了。
游戏开始时,地主拥有 张牌,三位农民每人拥有 张牌。游戏将进行若干回合,直到有人出完手中所有的牌:
- 每回合的首发者先出牌(游戏开始时,首发者是地主)。
- 每回合的首发者必须从自己拥有的牌中挑选若干张打出,且出的牌必须组成一种合法牌型(见下文)。出过的牌将被弃置不再使用。
- 接下来按照顺序,玩家依次选择是否跟出牌。例如若首发者是地主,那么接下来依次询问一号农民、二号农民、三号农民、地主、一号农民、二号农民、三号农民,以此类推。注意同一人可以在同一回合中多次出牌。
- 如果某位玩家跟出牌,那么必须从自己拥有的牌中挑选若干张打出,所出的牌必须也组成一种合法牌型,且必须比上一位出牌者出的牌更大(见下文)。出过的牌将被弃置不再使用。
- 如果某一时刻,有连续三位玩家均选择不出牌,本回合结束,最后一位出牌的玩家成为下一回合的首发者。
- 如果在某一回合的某一次出牌中,出牌者出完了手中所有的牌,那么游戏立即结束,该玩家所属的阵营获胜。
四人斗地主一共有十类合法牌型:
- 单张 :由一张点数为 的牌组成,满足 。
- 对子 :由两张点数为 的牌组成,满足 。
- 三张 :由三张点数为 的牌组成,满足 。
- 三带二 :由三张点数为 和两张点数为 的牌组成,满足 ,,。
- 顺子 :由点数为 至 中的牌组成,每种各一张,满足 。
- 连对 :由点数为 至 中的牌组成,每种各两张,满足 。
- 钢板 :由点数为 至 中的牌组成,每种各三张,满足 。
- 飞机 :由点数为 至 中的牌组成,每种各三张,满足 ;外加 个对子 $P=\{\text{D}(x_1),\text{D}(x_2),\cdots,\text{D}(x_{r-l+1})\}$。注意: 不必互不相同,也允许为 至 中的点数。也就是说,一共有 张牌。
- 炸弹 :由 张点数为 的牌组成,满足 ,。
- 王炸:由两张“大王”、两张“小王”组成。
可以得知,每种合法牌型恰好属于上面十种类型中的一种。
合法牌型 要想比合法牌型 大,需要满足下面的条件:
- 王炸比所有其余合法牌型都大。一整场游戏中只能有一个王炸,因此比较王炸之间的大小没有意义。
- 炸弹比不是炸弹或王炸的合法牌型大。
- 对于两个炸弹 和 , 比 大的充要条件为 或者 且 。
- 对于前八类合法牌型,不同类之间不能比较大小。也就是说,不能拿与上一个人出的牌不同类的前八类牌型来接牌。
- 对于两个单张 和 、两个对子 和 或两个三张 和 , 比 大的充要条件为 。
- 对于两个三带二 和 , 比 大的充要条件为 。也就是说,三带二牌型比较大小只看三张的部分,不看两张的部分。三张部分一样大的三带二牌型视为相等,无论两张部分是否一样大。
- 对于两个顺子 和 、两个连对 和 或两个钢板 和 ,若 ,则 和 不能比较大小;否则, 比 大的充要条件为 。
- 对于两个飞机 和 ,若 ,则 和 不能比较大小;否则, 比 大的充要条件为 。也就是说,飞机牌型比较大小只看连续三张的部分,不看剩余两张的部分。连续三张部分一样大的飞机牌型视为相等,无论剩余两张部分是否一样大。
现在 Silvefish 当上了地主,并得到了属于他的 张牌。真是一手好牌啊!Silvefish 想起了“春天”。“春天”是四人斗地主中的一种特殊现象,指从游戏开始到游戏结束的过程中,所有农民均未打出任何一张牌。现在他想知道,他是否有 的把握打出“春天”。他不知道农民手里的牌,所以这意味着他需要有一种出牌策略,使得无论农民剩余的 张牌如何分成三份(每份 张牌)给农民,他都一定能打出“春天”。可以认为农民们都非常希望出牌,只有他们真的无法打出任何牌时,才会选择不出。可惜手里的牌太多了,他算不过来。你能告诉他答案吗?
输入格式
本题包含多组测试数据。
首先在第一行输入一个整数 ()表示测试数据组数。
接下来对于每一组测试数据:
输入包含一行一个长度为 的字符串,表示 Silvefish 作为地主拿到的 张牌。保证字符串中的所有字符均为 Ww2AKQJT9876543 中的字符,且按照该顺序(也就是点数从大到小)依次输入,含义见题面描述。
保证每一组测试数据都是合法的地主开局手牌。
输出格式
对于每一组测试数据,如果 Silvefish 有 的把握打出“春天”,那么输出一行一个字符串 Yes,否则输出一行一个字符串 No。
样例输入
2
WW22222222AAKKQQTT777666555444333
W22AAKKQQQJJJTTT99988775544443333
样例输出
Yes
No
提示
样例包含两组测试数据。
在第一组测试数据中,Silvefish 可以选择先打出炸弹 (也即 22222222),农民无法接牌;然后再将剩余的 张牌作为飞机 $\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