题目描述
收服绿毛虫后,小智一行继续在常磐森林里往尼比市的方向前进,小霞一路上都在大惊小怪。这时,小智发现了独角虫,他打算靠皮卡丘来收服独角虫,可是皮卡丘却懒得搭理。小霞非常讨厌虫子,远远的逃开,却碰见一个身着武士铠甲的少年。这位武士少年似乎在寻找真新镇的训练师,他的目的是什么呢?与此同时,小智还在设法收服独角虫,丝毫不知道自己被人盯上了……
武士少年将他的剑指向小智,扬言说要跟小智用宝可梦进行决斗,此时独角虫偷偷溜走了,小智很生气,决定接受武士少年的挑战。
两轮比赛下来……仍未分出胜负,而此时双方派上场的宝可梦都是铁甲蛹 (铁甲蛹是由绿毛虫进化而来的),不会跑,只会变硬,于是一直在僵持着。旁边的小霞已经无聊至极,她拿出一副扑克牌,“喂,那边那两个,来陪我打牌!” 小智和武士少年也觉得有点无聊了,于是走到小霞身边坐了下来。
小霞清了清嗓子,说:" 我们来玩一个扑克牌游戏,一副牌有 5454 张,1 \sim 131∼13 每种数字 44 张,鬼牌是数字 00,有两张,我们三个人玩,所以每人初始拿到的牌 1818 张,如果拿到的牌里有相同的数字,就要丢掉两张,但是鬼牌不能丢,最后谁剩的牌最少谁就赢。"
小智举起了手:“请问,如果拿到的相同牌大于两张可以全部扔掉吗?”
小霞:“相同的牌数只有 22 张,33 张,44 张三种可能,22 张和 44 张的时候可以全部扔掉,33 张的时候只能扔掉22 张”。
武士少年也举起了手 : “请问,如果拿到两张鬼牌可以扔掉吗?”
小霞 : “不行,鬼牌是特殊的,多少张都不能扔掉!”
大家貌似都弄懂了规则,于是小霞开始发牌….
聪明的你理解规则了吗?现在假设你是三个人打牌中的一个,给你初始的牌,请算出你最后剩下几张牌。
输入描述
输入一行 1818 个数字,00 代表鬼牌,1 \sim 131∼13 是正常的扑克牌的数字。 00 最多只会出现两个,1 \sim 131∼13 中每个数字至多只会出现四个。
输出描述
输出一行表示最后剩几张牌。
样例输入 1
1 1 4 5 1 4 5 6 8 9 0 0 12 13 13 13 11 10
样例输出 1
10
提示
样例可以丢出的牌有两张 11、两张 44、两张 55、两张 1313,共丢出了 88 张,所以共剩下 18 - 8 = 1018−8=10 张牌。 鬼牌(数字 00) 虽然有 22 张,但不能丢弃。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<string>
#define ll long long
#define dd double
using namespace std;
int main() {ll a[19];map<ll, ll> ma;while (cin >> a[0]) {ll sum = 0;if (a[0] == 0) {sum++;}else {ma[a[0]]++;}for (ll i = 1; i < 18; i++) {cin >> a[i];if (a[i] != 0) {ma[a[i]]++;}else {sum++;}}for (ll i = 0; i < ma.size(); i++) {if (ma[i] == 1) {sum += 1;}if (ma[i] == 2) {continue;}if (ma[i] == 3) {sum += 1;}}cout << sum << endl;}
}