F. Sakurako's Box
https://codeforces.com/problemset/problem/2008/F
题意:给定长度为n的数组a,现在要求数组a的选择任意两个数字乘积的期望值。
思路:乘积期望公式是mul(a[i], a[j]) / (n * (n - 1)) / 2,主要计算时间在有序数对的乘积和计算上,只要维护一个sum值,从前往后一次性计算a[i]与其他数字所有的乘积和,简化计算过程即可。
总结:expected value我知道是什么意思,期望值是什么鬼?哎。。。
inline void solve() {
int n;
cin >> n;
vector<int> a(n);
for (auto& x : a) {
cin >> x;
}
long long sum = std::accumulate(a.begin(), a.end(), 0ll);
MInt u, d;
for (int i = 0; i < n; ++i) {
sum -= a[i];
u += (MInt)a[i] * sum;
}
d = 1ll * n * (n - 1) / 2;
cout << (u / d) << '\n';
}

浙公网安备 33010602011771号