题意:
在一个数组中挑些数分为两组,一组全不相同,一组全部相同。
分类讨论即可。
AC代码;
const int N = 2e5 + 10;
int a[N];
int n, m;
int cnt, res, ans;
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
map<int, int> mp;
cnt = 0;
ans = 0;
rep(i, 1, n)
{
int x;
sd(x);
if (!mp[x])
cnt++;
mp[x]++;
ans = max(ans, mp[x]);
}
if (cnt > ans)
pd(ans);
else if (cnt == ans)
pd(cnt - 1);
else
pd(cnt);
}
return 0;
}