题目描述
题解
大概题意:统计两个数组里同时出现的数的个数,和全部不相同数字的个数。 set可以去重和排序,开一个set数组进行操作即可
代码
#include<bits/stdc++.h>
using namespace std;
int a[55][10086];
set<int> va[55];
set<int>::iterator it;
void solve(int x,int y){
int mx=a[x][0],my=a[y][0];
int fz=0;
for(it=va[x].begin();it!=va[x].end();it++){
if(va[y].find(*it)!=va[y].end()) fz++;
}
double ans=(double)fz/(va[x].size()+va[y].size()-fz)*100;
printf("%.2lf",ans);
printf("%\n");
}
int main(){
int n,k,m;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&m);
a[i][0]=m;
for(int j=1;j<=m;j++) scanf("%d",&a[i][j]),va[i].insert(a[i][j]);
}
scanf("%d",&k);
while(k--){
int x,y;
scanf("%d%d",&x,&y);
solve(x,y);
}
return 0;
}
|