【题解】CF1956B Nene and the Card Game

Nene and the Card Game

题意

\(2n\) 张牌,\(1,2,3,\dots,n\) 皆有两张。

有两个人在玩游戏,每个人有 \(n\) 张卡片,当一人出了一张编号为 \(k\) 的卡片且再次之前两人之中任意一人也出了一张编号为 \(k\) 的卡片,则出卡人分数加一。

在本题中,两人皆用最优的方式。

先给出先手的牌,求先手的最大得分。

思路

最优的方式一定是先出自己手中存在数字相同的牌,然后若桌上有牌和自己手上的牌数字相同则出此牌,否则任意出一张牌。

然后,先手有 \(p\) 个对子,然后再前 \(4p\) 轮中,两人的对子都出完,接下两人的牌完全相同,则只能让先手出牌,后者得分。

则只需将手中对子的个数统计完即可。

代码

#include<bits/stdc++.h>
using namespace std;
int a[200000];
int main(){
	int T;
	cin>>t;
	while(T--){
		int n,p=0;
		cin>>n;
		for(int i=0;i<n;i++)scanf("%d",a);
		sort(a,a+n);
		for(int i=1;i<n;i++)
			if(a[i]==a[i-1]){
				p++;
				i++;
			}
		cout<<p<<"\n";
	}
	return 0;
}
posted @ 2024-04-18 17:08  Kcjhfqr  阅读(38)  评论(0)    收藏  举报
.poem-wrap { position: relative; width: 1000px; max-width: 80%; border: 2px solid #797979; border-top: none; text-align: center; margin: 40px auto; } .poem-left { left: 0; } .poem-right { right: 0; } .poem-border { position: absolute; height: 2px; width: 27%; background-color: #797979; } .poem-wrap p { width: 70%; margin: auto; line-height: 30px; color: #797979; } .poem-wrap h1 { position: relative; margin-top: -20px; display: inline-block; letter-spacing: 4px; color: #797979; font-size: 2em; margin-bottom: 20px; } #poem_sentence { font-size: 25px; } #poem_info { font-size: 15px; margin: 15px auto; }