江西理工大学南昌校区排名赛 A: 单身狗的卡片游戏

题目描述

萌樱花是一只单身狗。

萌樱花今天在桌子上摆出了N张卡片,每张卡片i写着一个数字Ai

他不喜欢卡片上的数字多个出现,于是他想搞点事情拆分它们。

从桌子上选出三张卡,去掉一张数字最大,一张数字最小,然后留下中间那张放回桌子上,

这样的操作持续到桌子上的卡片显示的数字都是唯一的才停止。

那么最后桌子上最多可以留下多少张卡片呢?

输入

3<=N<=105

N是奇数,这样保证绝对可以留下一张

1<=Ai<=105

Ai是整数

输入格式:

N

A1 A2 A3 .....AN

 

输出

输出 最后桌子上能留下多少张卡

样例输入

5
1 2 1 3 7

样例输出

3

提示

 我们选取1 1 2,去掉最大2,最小1,留下中间的1,最后桌子上只剩下1 3 7,一共三张卡

复制代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int a[200000];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    int x=unique(a,a+n)-a;
    if(x%2)
    {
        cout<<x;
    }
    else
    {
        cout<<x-1;
    }
    return 0;
}
复制代码
复制代码
#include<stdio.h>  
#include<string.h>  
#include<queue>  
#include<algorithm>  
using namespace std;  
int a[100006];  
int vis[100006];  
int main()  
{  
    int n;  
    while(~scanf("%d",&n))  
    {  
        memset(vis,0,sizeof(vis));  
        for(int i=0;i<n;i++)  
        {  
            scanf("%d",&a[i]);  
            vis[a[i]]++;  
        }  
        int j=100002;  
        for(int i=1;i<=100002;i++)  
        {  
            if(vis[i]>1)  
            {  
                while(vis[j]<=1&&j>i)j--;  
                if(j>i)  
                {  
                    if(vis[i]==vis[j])vis[i]=1,vis[j]=1;  
                    else if(vis[i]>vis[j])  
                    {  
                        vis[i]-=vis[j]-1;  
                        vis[j]=1;  
                        i--;  
                    }  
                    else if(vis[i]<vis[j])  
                    {  
                        vis[j]-=vis[i]-1;  
                        vis[i]=1;  
                        j++;  
                    }  
                }  
            }  
        }  
        int output=0;  
        for(int i=1;i<=100002;i++)  
        {  
            if(vis[i]==1)output++;  
            if(vis[i]>1)  
            {  
                if(vis[i]%2==0)continue;  
                else output++;  
            }  
        }  
        printf("%d\n",output);  
    }  
}  
复制代码

 

 

posted @   樱花落舞  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2017-08-17 2017"百度之星"程序设计大赛 - 初赛(B)小小粉丝度度熊
2017-08-17 2017"百度之星"程序设计大赛 - 初赛(A)小C的倍数问题
2017-08-17 2017 Multi-University Training Contest - Team 7 Just do it
点击右上角即可分享
微信分享提示