PTA-L2-005
作者:
骏杰
,
2022-04-21 16:41:11
,
所有人可见
,
阅读 121
为啥会扣我段数据呐
#include <iostream>
#include <algorithm>
#include <cstring>
#include <set>//这道题用set去重
#include <stdio.h>
using namespace std;
const int N=55,M=2010;
double ques[N];
int main()
{
set<int> st[N];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int m;
cin>>m;
for(int j=0;j<m;j++)
{
int x;
cin>>x;
st[i].insert(x);
}
}
int t;
cin>>t;
for(int k=0;k<t;k++)
{
int l,r;
cin>>l>>r;
int cnt=0;//两个集合内相同的数字个数
int cntA=st[l-1].size();
int cntB=st[r-1].size();
for(auto i=st[l-1].begin();i!=st[l-1].end();i++)//此时end为空,,,auto+*i,并且注意输入a,b;询问数组时候下标减一
{
if(st[r-1].find(*i)!=st[r-1].end())//注意加*,如果set找不到指定值会返回长度+1
{
cnt++;
}
}
ques[k]=cnt*1.0/(cntA+cntB-cnt)*100;//求百分比结果
}
for(int k=0;k<t;k++)
{
printf("%.2lf%%\n",ques[k]);
}
return 0;
}