给n个集合,可以选取其中两个集合,得到其并集的大小,求n个集合会产生的并集大小的平均值。
#include <iostream>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
int main() {
int n = 0;
cin >> n;
vector<vector<int>>dp;
for(int i=0;i<n;i++)
{
int s = 0;
cin >> s;
vector<int>nums(s);
for (int j = 0; j < s; j++)
{
cin >> nums[j];
}
dp.push_back(nums);
}
int sum = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i && j != i; j++)
{
set<int> p;
p.insert(dp[i].begin(), dp[i].end());
p.insert(dp[j].begin(), dp[j].end());
sum += p.size();
}
}
printf("%.11lf", sum * 2 / (double)n);
return 0;
}
考完研究半个小时,我是这样算的,有没有大佬给一下解决方法?