2469. [CSP-J 2024] 扑克牌

1000ms 512MB 简单 CSP - J CSP - J 2024
题目描述
小 P 从同学小 Q 那儿借来一副 $n$ 张牌的扑克牌。 本题中我们不考虑大小王,此时每张牌具有两个属性:花色和点数。花色共有 $4$ 种:方片、草花、红桃和黑桃。点数共有 $13$ 种,从小到大分别为 $\tt{A 2 3 4 5 6 7 8 9 T J Q K}$。注意:点数 $10$ 在本题中记为 $\tt T$。 我们称一副扑克牌是**完整**的,当且仅当对于每一种花色和每一种点数,都**恰好**有一张牌具有对应的花色和点数。由此,一副完整的扑克牌恰好有 $4 \times 13 = 52$ 张牌。以下图片展示了一副完整的扑克牌里所有的 52 张牌。
小 P 借来的牌可能不是完整的,为此小 P 准备再向同学小 S 借若干张牌。可以认为小 S 每种牌都有无限张,因此小 P 可以任意选择借来的牌。小 P 想知道他至少得向小 S 借多少张牌,才能让从小 S 和小 Q 借来的牌中,可以选出 $52$ 张牌构成一副完整的扑克牌。 为了方便你的输入,我们使用字符 $\tt D$ 代表方片,字符 $\tt C$ 代表草花,字符 $\tt H$ 代表红桃,字符 $\tt S$ 代表黑桃,这样每张牌可以通过一个长度为 $2$ 的字符串表示,其中第一个字符表示这张牌的花色,第二个字符表示这张牌的点数,例如 $\tt{CA}$ 表示草花 $\tt A$,$\tt{ST}$ 表示黑桃 $\tt T$(黑桃 10)。
输入格式
输入的第一行包含一个整数 $n$ 表示牌数。 接下来 $n$ 行: 每行包含一个长度为 $2$ 的字符串描述一张牌,其中第一个字符描述其花色,第二个字符描述其点数。
输出格式
输出一行一个整数,表示最少还需要向小 S 借几张牌才能凑成一副完整的扑克牌。
样例 1
输入 (Input)

                    
输出 (Output)

                    
样例 2
输入 (Input)

                    
输出 (Output)

                    
样例说明
**【样例 1 解释】** 这一副牌中包含一张黑桃 $\tt A$,小 P 还需要借除了黑桃 $\tt A$ 以外的 51 张牌以构成一副完整的扑克牌。 **【样例 2 解释】** 这一副牌中包含两张方片 $\tt Q$、一张方片 $\tt T$(方片 10)以及一张红桃 3,小 P 还需要借除了红桃 3、方片 $\tt T$ 和方片 $\tt Q$ 以外的 $49$ 张牌。
对于所有测试数据,保证:$1 \leq n \leq 52$,输入的 $n$ 个字符串每个都代表一张合法的扑克牌,即字符串长度为 $2$,且第一个字符为 $\tt{D C H S}$ 中的某个字符,第二个字符为 $\tt{A 2 3 4 5 6 7 8 9 T J Q K}$ 中的某个字符。 | 测试点编号 | $n \leq$ | 特殊性质 | | :----------: | :----------: | :----------: | | $1$ | $1$ | A | | $2\sim 4$ | $52$ | ^ | | $5\sim 7$ | ^ | B | | $8\sim 10$ | ^ | 无 | 特殊性质 A:保证输入的 $n$ 张牌两两不同。 特殊性质 B:保证所有牌按照点数从小到大依次输入,点数相同时按照方片、草花、红桃、黑桃的顺序依次输入。
自测终端 stdin → stdout
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
训练中心
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字