贪心即可处理,对于满足x<n的x,只要出现了就是一个不动点,最多作为不动点两次
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int OvO = 0;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
cin>>n;
unordered_map<int,int> mp;
int ans=0;
for(int i=1;i<=n*2;i++)
{
int x;
cin>>x;
mp[x]++;
if(mp[x]<=2&&x<=n)
{
ans++;
}
}
cout<<ans;
return OvO;
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int OvO = 0;
int cnt[200005];
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
cin >> n;
int x, ans = 0;
for (int i = 1; i <= 2 * n; i++) {
cin >> x;
if (x > n)
continue;
else {
if (++cnt[x] <= 2) {
ans++;
}
}
}
cout << ans;
return OvO;
}

京公网安备 11010502036488号