3
10
9Example
input
3
8
1 4 8 4 5 6 3 8
16
2 1 3 3 4 3 4 4 1 3 2 2 2 4 1 1
9
2 2 4 4 4 7 7 7 7output

题意:
n个糖果,分为多个种类,要求尽可能的多选,并且使得不同种类的数量不能相同。
解析:
记录每种糖果的数量,然后排序,对于每种糖果尽可能的多拿,并且保证数量不同。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int q,n,a[N],t;
int main(){
	scanf("%d",&q);
	while(q--){
		scanf("%d",&n);
		map<int,int>mp; 
		for(int i=0;i<n;i++){
			scanf("%d",&t);
			mp[t]++;
		}
		vector<int>a;
		for(auto it:mp){
			a.push_back(it.second);
		}
		sort(a.begin(),a.end());
		int res=0,f=2e5+1;
		for(int i=a.size()-1;i>=0;i--){
			if(a[i]==0||f<=0) break;
			if(a[i]>=f) res+=f,f-=1;
			else res+=a[i],f=a[i]-1;
		}	
		printf("%d\n",res);
	}
	return 0;
}


















