马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 高山 于 2026-9-23 05:55 编辑
如果你想学习学习「模拟」算法 或正在复习CSP第二轮
那你可以按照本系列的节奏进行
在本系列中,我们将带领鱼油一同回顾算法基础,完成CSP算法真题,帮助他们尽可能在复赛获得更高的分数。
话不多说,让我们先看看题目: P11227 [CSP-J 2024] 扑克牌
小 P 从同学小 Q 那儿借来一副 n 张牌的扑克牌。
本题中我们不考虑大小王,此时每张牌具有两个属性:花色和点数。
- 花色共有 4 种:方片、草花、红桃、黑桃。
- 点数共有 13 种,从小到大分别为 A、2、3、4、5、6、7、8、9、T、J、Q、K。
注意:点数 10 在本题中记为 T。
【完整的一副牌】
我们称一副扑克牌是完整的,当且仅当对于每一种花色和每一种点数,都恰好有一张牌具有对应的花色和点数。
由此,一副完整的扑克牌恰好有 4 × 13 = 52 张牌。
如图:
【题意】
小 P 借来的牌可能不是完整的,为此小 P 准备再向同学小 S 借若干张牌。可以认为小 S 每种牌都有无限张,因此小 P 可以任意选择借来的牌。
小 P 想知道他至少得向小 S 借多少张牌,才能让从小 S 和小 Q 借来的牌中,可以选出 52 张牌构成一副完整的扑克牌。
【输入格式】
输入的第一行包含一个整数 n,表示牌数。
接下来 n 行:每行包含一个长度为 2 的字符串描述一张牌,其中第一个字符描述其花色,第二个字符描述其点数。
例如 CA 表示草花 A,ST 表示黑桃 T(黑桃 10)。
【输出格式】
输出一行一个整数,表示最少还需要向小 S 借几张牌才能凑成一副完整的扑克牌。
【输入输出样例】
输入 #1
输出 #1
输入 #2
输出 #2
输入 #3
- 52
- DA DK D2 D3 D4 D5 D6 D7 D8 D9 DT DJ DQ C2 C3 C4 C5 C6 C7 C8 C9 CT CJ CQ CK HA HK H2 H3 H4 H5 H6 H7 H8 H9 HT HJ HQ S2 S3 S4 S5 S6 S7 S8 S9 ST SJ SQ SK
复制代码
输出 #3
【样例解释】
样例 1:这一副牌中包含一张黑桃 A,小 P 还需要借除了黑桃 A 以外的 51 张牌以构成一副完整的扑克牌。
样例 2:这一副牌中包含两张方片 Q、一张方片 T(方片 10)以及一张红桃 3,小 P 还需要借除了红桃 3、方片 T 和方片 Q 以外的 49 张牌。
样例 3:这一副扑克牌是完整的,故不需要再借任何牌。该样例满足所有牌按照点数从小到大依次输入,点数相同时按照方片、草花、红桃、黑桃的顺序依次输入。
【数据范围】
对于所有测试数据,保证:
| 条件 | 范围 | | 牌数 n | 1 ≤ n ≤ 52 | | 字符串长度 | 2 | | 首字符 | D、C、H、S 之一 | | 第二个字符 | A 2 3 4 5 6 7 8 9 T J Q K 之一 |
【特殊性质】
特殊性质 A:保证输入的 n 张牌两两不同。
特殊性质 B:保证所有牌按照点数从小到大依次输入,点数相同时按照方片、草花、红桃、黑桃的顺序依次输入。
| 性质 | 条件 | | 特殊性质 A | 输入的 n 张牌两两不同 | | 特殊性质 B | 按点数从小到大输入,同点数按 D、C、H、S 顺序 |
|