[CSP-J 2024] 扑克牌神经题解
2025-10-19 20:07:43
发布于:广东
1阅读
0回复
0点赞
好的啊这题呢就是纯模拟啊,所以直接上思路:
- 读取数量
- 输入牌(因为不需要
n
了所以可以直接while(n--)
) - 处理
这里的输入和处理可以分开也可以同步,此处按照同步解释
因为每张牌只需要1张,所以不需要考虑多张一样。
那么如何统计数量呢?
观察提交记录可以发现很多人都用了先计算有多少再减的方法,但是这种方法不适合同步处理。其实可以把这两步合成。步骤如下:
- 读取输入
- 如果这张牌没有被记录说明又有新的了,没有的牌-1
- 记录访问
思路:相当于不记录有多少,而是有一张减一张。
代码:
int n,cnt=52;
map<string,bool> m;
//main()
string s;cin >> s;
if(!m[s])cnt--;
m[s]=1;
接下来套一遍循环while(n--)
最后直接输出cnt
即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,cnt=52;
map<string,bool> m;
int main(){
cin >> n;
while(n--){
string s;cin >> s;
if(!m[s])cnt--;
m[s]=1;
}
cout << cnt;
}
这道题不难,但是1024个人有210种解法。包括你还能看到拿set
的。
这里空空如也
有帮助,赞一个