#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define N 51
int countcommon(vector<int> &_s1, vector<int> &_s2) {
vector<int> *p1 = &_s1, *p2 = &_s2;
if(p1->size() > p2->size())
swap(p1, p2);
vector<int> &s1 = *p1, &s2 = *p2;
int count = 0;
int d = -1;
for(int i = 0; i < s1.size(); i ++) {
if(s1[i] != d) {
d = s1[i];
if(binary_search(s2.begin(), s2.end(), d))
count ++;
}
}
return count;
}
int main(int argc, char **argv) {
int n;
cin >> n;
vector<int> ns[N];
int count[N] = {};
for(int i = 1; i <= n; i ++) {
int m;
cin >> m;
ns[i].reserve(m);
for(int j = 0; j < m; j ++) {
int d;
scanf("%d", &d);
ns[i].push_back(d);
}
sort(ns[i].begin(), ns[i].end());
int d = -1;
for(int j = 0; j < m; j ++) {
if(ns[i][j] != d) {
count[i] ++;
d = ns[i][j];
}
}
}
int k;
cin >> k;
for(int i = 0; i < k; i ++) {
int s1, s2;
scanf("%d%d", &s1, &s2);
int total = count[s1] + count[s2];
int common = countcommon(ns[s1], ns[s2]);
printf("%.1lf%%\n", 100.0*common/(total-common));
}
return 0;
}
1063. Set Similarity (25)
最新推荐文章于 2021-02-23 15:04:11 发布