#vOv. 思念
思念
题目背景
众所周知,一副纸牌有 张牌,除去一张大王和一张小王外,剩下的牌可以分为四种花色,分别是黑桃(Spade)、红桃(Heart)、方块(Diamond)、梅花(Club)。
每种花色都有 13 个点数,自小到大依次是:。点数和花色的组合构成了一张扑克牌,例如:黑桃 。
题目描述
中秋-国庆假期到了,小 F 终于能离开学校,奔向她朝思暮想的小 C。见面一阵亲昵后,她们做的第一件事竟然是——坐下来打牌?
她们在打一副扑克牌。我们用一个长度为 的字符串来代表一张扑克牌的信息:
- 字符串的第一个字符是字母
S
,H
,D
,C
之一,分别表示扑克牌的花色是黑桃、红桃、方片、梅花。 - 字符串的第二个字符是 之一,表示一张扑克牌对应的点数。特别的,请注意我们用
X
表示点数 。
在接下来计算点数时,我们认为:
J
,Q
,K
,A
,2
的点数为依次为 。- 其余牌的点数就是他们自己的数字点数,例如,
3
的点数为 ,X
的点数为 。
为了简化问题,我们认为双方的牌均不含大小王,且可以打出的牌型只有如下五种:
牌型 | 解释 | 举例 |
---|---|---|
单张 | 一张牌 | SX |
对子 | 两张点数相同的牌 | S3 ,H3 |
同花顺 | 三张及以上花色相同且点数连续的牌,特别的, 不能被用于同花顺 | CJ , CQ , CK , CA |
普通顺子 | 五张及以上点数连续且不是同花顺的牌,特别的, 不能被用于顺子 | H3 , S4 , H5 , H6 , H7 |
三带一 | 三张点数相同的牌带一张其它点数的牌 | D4 , S4 , H4 , S2 |
定义一次打出的牌称为『一套牌』,定义一套打出的牌的点数如下:
- 如果这套牌的牌型不是三带一,则这套牌的点数是本次打出的所有牌的点数之和。例如,同花顺
C9
,CX
,CJ
的点数是 。 - 如果这套牌的牌型是三带一,则这套牌的点数是那三张点数相同的牌的点数。例如,三带一
D3
,S3
,H3
,S5
的点数是 。
现在,小 C 打出了一套牌 ,我们保证这套牌的牌型是上述五种牌型之一。给你小 F 的手牌,请你帮小 F 找到一套点数最小的牌 ,满足:
- 的牌型、张数均与 的相同。
- 的点数大于 的点数。
如果有多个符合要求的 ,你可以输出任意一个。
输入格式
第一行是一个整数,表示小 F 的手牌数量 。
第二行有 个长度为 的字符串,字符串之间用单个空格隔开。每个字符串表示小 F 的一张手牌,格式见【题目描述】。
第三行是一个整数,表示小 C 打出的手牌数量 。
第四行有 个长度为 的字符串,字符串之间用单个空格隔开。每个字符串表示小 C 打出的一张牌,格式见【题目描述】。
数据保证第二行和第四行给出的手牌按照点数从小到大的顺序排序。
输出格式
如果不存在符合要求的手牌 ,请输出一行一个整数 -1
表示无解。
否则输出一行 个用单个空格隔开的长度为 的字符串,表示你找到的牌,格式与【题目描述】相同。你的输出不必把牌按点数从小到大的顺序排序。
样例输入输出
样例 1 输入
7
S7 S8 S9 SX SJ SQ CQ
1
D7
样例 1 输出
S8
样例 2 输入
7
S7 S8 S9 SX SJ SQ CQ
2
DJ CJ
样例 2 输出
SQ CQ
样例 3 输入
7
S7 S8 S9 SX SJ SQ CQ
4
C3 C4 C5 C6
样例 3 输出
S7 S8 S9 SX
样例 4 输入
7
S7 S8 S9 SX SJ SQ CQ
5
D6 C7 D8 D9 DX
样例 4 输出
S8 S9 SX SJ CQ
样例 5 输入
4
S7 D7 C7 H3
4
C3 D3 S3 D4
样例 5 输出
S7 D7 C7 H3
数据规模与约定
本题共 25 个测试点,各测试点信息如下表:
测试点编号 | 输入小 C 的牌型 | 特殊性质 | 是否有解 |
---|---|---|---|
单张 | 输入牌的点数不超过 | 无解 | |
有解 | |||
无 | |||
对子 | 输入牌的点数不超过 | 无解 | |
有解 | |||
无 | |||
同花顺 | 无解 | ||
输入牌的点数不超过 | 有解 | ||
无 | |||
普通顺子 | 无解 | ||
输入牌的点数不超过 | 有解 | ||
无 | |||
三带一 | 输入牌的点数不超过 | 无解 | |
有解 | |||
无 |
对全部的测试点,保证:
- 。
- 输入的手牌符合【题目描述】中的格式说明,且不会有同一张牌出现两次。