AT [ARC033B] メタ構文変数
FreedomKing · · 题解
思路
首先转化一下题意,交集就是统计在两个集合共出现两次的元素,并集就是两个集合存在一块减去交集。
直接考虑两个 STL 容器的特性。由于元素的范围很大,可以使用 map 作为桶进行统计;set 是集合,可以直接为两个集合去掉交集,也就是去重。
AC Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
int a[N],n,m,t,k;
vector<int>e[N];
bool vis[N];
string s;
set<int>st;
map<int,int>mp;
signed main(){
cin>>n>>m;
int n_m=n+m;
for(int i=1;i<=n_m;i++){
int x;
cin>>x;
st.insert(x);
mp[x]++;
}
for(auto i:mp) if(i.second>=2) k++;
int _size=st.size();
printf("%.8f\n",(k*1.0/_size));
return 0;
}