题解 | 小红的不动点分配
小红的不动点分配
https://www.nowcoder.com/practice/9af88720190248d5a8dc3cebdf050b21
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n=0;
cin>>n;
vector<int>nums(n*2,0);
vector<int>arr(2e5,0);
for(int i=0;i<n*2;i++)
{
cin>>nums[i];
arr[nums[i]]++;
}
//用大的一个数组记录数字的出现次数
int sum=0;
for(int i=1;i<=n;i++)sum+=min(2,arr[i]);
//分成两个数组
//因为是n个数,所以只能最大到n
//单独看其中一个要从1开始到n,如果这个数字出现1次,就只能用一次所以作为一个不动点
//如果是出现2次,则可以放在两个数组中,如果更大,则无法使用,还是2次.
cout<<sum<<endl;
return 0;
}