题解 | 小红的不动点分配

小红的不动点分配

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;
}

全部评论

相关推荐

02-04 13:52
已编辑
山西农业大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务