1063 Set Similarity 你好,我跟你思路一样,也是用一个新的set存两个set中的元素,样例也能通过,但是检测点过不了,实在没找到原因。
#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
set<int> a[51];
int main() {
int n, m,num;
scanf("%d", &n);
for (int i = 1;i <= n;i++) {
scanf("%d", &m);
for (int j = 0;j < m;j++) {
scanf("%d", &num);
a[i].insert(num);
}
}
int k,set1,set2;
double Nc, Nt;
scanf("%d", &k);
set<int> res;
for (int i = 0;i < k;i++) {
scanf("%d %d", &set1, &set2);
for (set<int>::iterator it = a[set1].begin();it != a[set1].end();it++) {
res.insert(*it);
}
for (set<int>::iterator it = a[set2].begin();it != a[set2].end();it++) {
res.insert(*it);
}
Nt = res.size();
Nc = a[set1].size() + a[set2].size()-Nt;
double res = Nc / Nt;
printf("%.1lf%%\n", res*100);
}
return 0;
}
找到错误了,集合res没有清零,我也不知道怎么过测试点的。。。。。