洛谷求题解U326280 让所有数都不同

让所有数都不同

题目描述

给定一个含有n个元素的数组a,每次你可以选两个不同位置的数删除,目标把数组删成所有数都不相同(或者删为空数组),你会发现这个目标一定能实现。

请问实现目标时,数组的元素最多可能为多少?

输入格式

第一行一个整数T,表示数据组数

接下来T组数据,对于每组数据,第一行一个整数n,表示数组元素个数,第二个n个整数,表示a[i]

输出格式

T行,每行一个整数,表示答案

样例 #1

样例输入 #1

4
6
2 2 2 3 3 3
5
9 1 9 9 1
4
15 16 16 15
4
10 100 1000 10000

样例输出 #1

2
1
2
4

提示

对于100%的数据,1<=T<=1000,1<=n<=50,1<=a[i]<=1000

希望可以采纳



```c++
/*就是找数组中有几个不同的元素的,但是因为一次删除两个数字,所以要考虑是否减一的情况*/ 
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e6+10;
int cnt[N];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        memset(cnt,0,sizeof(cnt));
        int n;
        cin>>n;
        int count=0;
        for(int i=0;i<n;i++)
        {
            int x;
            cin>>x;
            
            if (cnt[x]==0)
            {
                cnt[x]=1;
                count++;
            }
        }
        if((n-count)%2!=0)count--;   //因为每次删除两个数字,所以如果有重复个数的数字是奇数个,需要减一 
        cout<<count<<endl;
    }
    return 0;
}
/*
4
6
2 2 2 3 3 3
5
9 1 9 9 1
4
15 16 16 15
4
10 100 1000 10000
*/

```

定义一个字典,把不相同的数字插入,得到所有不同数字的个数m,原来的数字为n
如果m、n都是偶数或者奇数,输出m,否则输出m-1
代码就不写了,心态崩了,早上写了一个程序,那个题主直接无满意结题。你要代码,可以采纳一下,我再写。

【以下回答由 GPT 生成】

请问在实现目标时,删除的是两个相同的数还是两个不同的数?



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^