题意是,给出两个集合,求出两个集合相同元素的个数除以两个集合不同元素的总数。
#include<stdio.h>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<ctime>
#include<cstring>
#include<string>
#include<map>
#include<set>
using namespace std;
#define N 1000100
set<int> s[55];
int main()
{
// freopen("input.txt","r",stdin);
int n,i,j,s1,s2,c,cs,tmp;
set<int>::iterator it1,it2;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>j;
while(j--)
{
cin>>tmp;
s[i].insert(tmp);
}
}
cin>>n;
while(n--)
{
cin>>s1>>s2;
c=cs=0;
cs=s[s1].size()+s[s2].size();
it1=s[s1].begin();
it2=s[s2].begin();
while(it1!=s[s1].end()&&it2!=s[s2].end())
if(*it1==*it2)
{
c++;
it1++;
it2++;
}
else
if(*it1>*it2)
it2++;
else
it1++;
printf("%.1f%%\n",c/((cs-c)/1.0)*100);
}
return 0;
}