#P50001. 人工智能

人工智能

题目描述

你是一个人工智能,你需要帮助小 A 完成一局麻将游戏。

小 A 十分喜欢立直麻将这种棋牌游戏,而不论是什么麻将,麻将都拥有相似的胡牌规则,小 A 想要作为人工智能的你来回答,对于给定的一幅手牌,其是否符合麻将的一般型(面子手)中的胡牌型。

此外,为了增加难度,小 A 还会考验你给定一幅听牌的手牌,问这幅手牌听什么牌(也就是多获得一张什么样的牌可以胡牌)。

关于麻将的规则,小 A 的介绍如下:

  • 一幅麻将手牌胡牌时应当恰有 1414 张牌(也就是听牌时恰有 1313 张牌),本题中的麻将也不例外;
  • 本题中,麻将共有三种花色,分别是万(m)、饼(p)、索(s),每种花色共有 99牌(编号为 191\sim 9),每种牌最多 44,例如一万记为 1m、九索记为 9s
  • 一幅麻将胡牌时应当由 44 组面子与 11 组雀头组成,其中雀头是指两张完全相同的牌(如:22s99m),而面子在本题中一共有顺子与刻子两种,介绍如下:
    • 顺子是指数字大小连续的三张同花色的牌,例如:123s789p456m;但形如 135m159p891s 的三张牌则不构成顺子;
    • 刻子是指三张完全相同的牌,如:333m777s444p;但形如 445s 的三张牌则不构成刻子。
  • 当听牌在手牌中已经出现 44 张时,由于没有第 55 张牌可以胡,不认为这张牌是所听的牌。

输入格式

第一行一个正整数 nn,表示麻将牌的张数。

第二行一个正整数 TT 表示手牌组数。

接下来 TT 行,每行 nn 个用空格分隔的长度为 22 的字符串,表示手牌。

输出格式

输出共 TT 行,对于每组数据:

  • n=14n=14 输出一行一个非负整数,1 表示胡牌,0 表示没胡。
  • n=13n=13 输出一行若干个用空格分隔的长度为 22 的字符串,按照第一关键字为 mps,第二关键字为 123456789 的顺序将给定手牌的听牌输出(若没听则输出空行)。

样例输入与输出

14
2
1s 1s 1s 2s 3s 4s 5s 6s 7s 8s 9s 9s 9s 5s
1s 1s 1s 2s 3s 4s 5s 6s 7s 8s 9s 9s 9s 1m
1
0
13
7
1s 2s 3s 4s 5s 6s 7s 8s 9s 1m 1m 2p 3p
2s 2s 3s 3s 4s 4s 5s 6s 6s 7s 7s 8s 8s
1m 1m 1m 1m 2m 2m 2m 2m 3m 3m 3m 4m 9m
1s 1s 1s 2s 3s 4s 5s 6s 7s 8s 9s 9s 9s
1m 1m 1m 2m 3m 7p 8p 9p 9p 9p 9s 9s 9s
1m 1m 1m 1m 2m 2m 3m 3m 7s 8s 9s 9s 9s
2p 3p 4p 4p 4p 4p 5p 6p 7s 8s 9s 9s 9s
1p 4p
2s 5s 8s

1s 2s 3s 4s 5s 6s 7s 8s 9s
1m 4m 6p 9p
4m 6s 9s
1p 7p 6s 9s

数据规模与约定

对于所有数据,13n1413\leq n\leq 141T101\leq T\leq 10,每个测试点的具体约束如下:

为了方便阅读,我们将测试点编号放在了表格中央。

出现的花色数最少为 mm,每张牌最多出现 kk 次。

  • 特殊性质:最多只会有一种牌的张数为两张。
n=n= m=m= k=k= 测试点编号 特殊性质
14 3 2 1
2
3
4
2 2 5
3 6
4 7
1 2 8
3 9
4 10
11
13 3 2 12
13
3 14
4 15
2 2 16
3 17
4 18
1 2 19
3 20~22
4 23~25