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 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';

}

posted @ 2025-12-27 09:57  _Yxc  阅读(19)  评论(0)    收藏  举报