一、题目
二、解题思路
- Nc是两个集合都有的不相等整数的个数:A∩B ;
- Nt是两个集合一共有的不相等整数的个数:A∪B = A.size() + B.size() - A∩B ;
三、代码
#include<iostream>
using namespace std;
#include<set>
int main()
{
int n;
set<int> se[55];
cin>>n;
for(int i=1;i<=n;i++)
{
int k;
cin>>k;
while(k--)
{
int t;
cin>>t;
se[i].insert(t);
}
}
// for(int i=1;i<=n;i++)
// {
// for(set<int>::iterator it=se[i].begin();it!=se[i].end();it++)
// {
// cout<<*it<<" ";
// }
// cout<<endl;
// }
int m;
cin>>m;
while(m--)
{
int x,y;
cin>>x>>y;
int nc=0;
for(set<int>::iterator it=se[x].begin();it!=se[x].end();it++)
{
if(se[y].count(*it))
{
nc++;
}
}
int nt=se[x].size()+se[y].size()-nc;
printf("%.2f%\n",1.0*nc/nt*100);
}
return 0;
}
四、总结
set<int> se[55] :