P11227 [CSP-J 2024] 扑克牌 题解
闲话
本蒟蒻的第一篇题解,对萌新非常友好。
题目传送门
今年 CSP-J 第一(送分)题,不少大佬不到 5min 就 AC 了。
考后讨论发现很多人采用桶排序、set 等高级算法,其实此题简单的思路就能过。
题目概述
小 P 从同学小 Q 那儿借来一副
小 P 借来的牌可能不是完整的,为此小 P 准备再向同学小 S 借若干张牌。小 P 想知道他至少得向小 S 借多少张牌,才能让从小 S 和小 Q 借来的牌中,可以选出
做法很简单,大致思路:
本题解采用 sort 寻找重复牌数。
代码:
#include<bits/stdc++.h>//懒人头文件
using namespace std;
int n;
string a[55];
int main(){
cin >> n;
int cnt = 0;//用来记录重复牌数
for(int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1);//让相同的牌相邻,方便判断
for(int i = 1; i <= n; i++){
if(a[i] == a[i + 1]) cnt++;//如果两张牌相同,cnt记录
}
cout << 52 - n + cnt;//即 总牌数-(小P拥有的牌数 - 重复的牌数)
return 0;//完结撒花
}
恭喜又拿到100pts,离省一又近了一步。
PS:修改记录:
- 10-16 修改了小标题,将需强调的改为粗体。
- 10-17 考场上使用set的同机房大佬写出了set题解,本篇做了引用,以供参考。
- 25-2-11 闲的没事,修缮了不少格式问题,毕竟是梦开始的地方。