#1. 扑克牌(poker)

扑克牌(poker)

扑克牌(poker)

本题为 CSP-J 2024 第二轮真题。本 OJ 采用标准输入输出评测,无需文件重定向。

【题目描述】 小P 从同学小Q 那儿借来一副n 张牌的扑克牌。 本题中我们不考虑大小王,此时每张牌具有两个属性:花色和点数。花色共有4 种: 方片、草花、红桃和黑桃。点数共有13 种,从小到大分别为A 2 3 4 5 6 7 8 9 T J Q K。注意:点数10 在本题中记为T。 我们称一副扑克牌是.完.整的,当且仅当对于每一种花色和每一种点数,都.恰.好有一 张牌具有对应的花色和点数。由此,一副完整的扑克牌恰好有4 × 13 = 52 张牌。以下 图片展示了一副完整的扑克牌里所有的52 张牌。 图1: 一副完整的扑克牌 小P 借来的牌可能不是完整的,为此小P 准备再向同学小S 借若干张牌。可以认 为小S 每种牌都有无限张,因此小P 可以任意选择借来的牌。小P 想知道他至少得向 小S 借多少张牌,才能让从小S 和小Q 借来的牌中,可以选出52 张牌构成一副完整的 扑克牌。 为了方便你的输入,我们使用字符D 代表方片,字符C 代表草花,字符H 代表红 桃,字符S 代表黑桃,这样每张牌可以通过一个长度为2 的字符串表示,其中第一个字 符表示这张牌的花色,第二个字符表示这张牌的点数,例如CA 表示草花A,ST 表示黑 桃T(黑桃10)。 【输入格式】 从文件poker.in 中读入数据。 输入的第一行包含一个整数n 表示牌数。 接下来n 行: 每行包含一个长度为2 的字符串描述一张牌,其中第一个字符描述其花色,第二个 字符描述其点数。 【输出格式】 输出到文件poker.out 中。 输出一行一个整数,表示最少还需要向小S 借几张牌才能凑成一副完整的扑克牌。 【样例1 输入】 1 1 2 SA 【样例1 输出】 1 51 【样例1 解释】 这一副牌中包含一张黑桃A,小P 还需要借除了黑桃A 以外的51 张牌以构成一副 完整的扑克牌。 【样例2 输入】 1 4 2 DQ 3 H3 4 DQ 5 DT 【样例2 输出】 1 49 【样例2 解释】 这一副牌中包含两张方片Q、一张方片T(方片10)以及一张红桃3,小P 还需要 借除了红桃3、方片T 和方片Q 以外的49 张牌。 【样例3】 见选手目录下的poker/poker3.in 与poker/poker3.ans。 【样例3 解释】 这一副扑克牌是完整的,故不需要再借任何牌。 该样例满足所有牌按照点数从小到大依次输入,点数相同时按照方片、草花、红桃、 黑桃的顺序依次输入。 【数据范围】 对于所有测试数据,保证:1 ≤n ≤52,输入的n 个字符串每个都代表一张合法的 扑克牌,即字符串长度为2,且第一个字符为D C H S 中的某个字符,第二个字符为 A 2 3 4 5 6 7 8 9 T J Q K 中的某个字符。 测试点编号 n ≤ 特殊性质 1 1 A 2 ∼4 52 5 ∼7 B 8 ∼10 无 特殊性质A:保证输入的n 张牌两两不同。 特殊性质B:保证所有牌按照点数从小到大依次输入,点数相同时按照方片、草花、 红桃、黑桃的顺序依次输入。

地图探险(explore) 地图探险(explore)


📦 本题含官方测试数据(CC BY-NC,noi.cn 发布),共 6 个测试点。