【题解】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;
}

浙公网安备 33010602011771号