#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
//a存这些id所对的人数多余了几个,比如2 2 2 2 2 2 3 4,就是多余了4个
//b存id人数小于2,也就是1的个数,比如2 2 2 2 2 2 3 4,就是2
int n,a,b;
//bn存有几个编号i,an存输入的数
int bn[100005],an[100005];
void solve(){
cin>>n;
for(int i=0;i<n;i++){
cin>>an[i];
bn[an[i]]++;
}
for(int i=1;i<=n;i++){
if(bn[i]>2) a+=bn[i]-2;
if(bn[i]==1) b++;
}
//情况1
//把多出来的id更改为人数少的那个id
//剩余的多出来的id再 全部 改成人数为0的id
if(a>=b){
cout<<a;
//情况2
//多出来的id改成人数少的那个id之后,剩余的人数为1的id再相互匹配
}else{
cout<<a+(b-a)/2;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
班级活动-贪心
于 2024-05-08 21:56:01 首次发布