题目大意:
现在有 n n n个兔子抢胡萝卜, n n n个兔子初始质量分别为 w i w_i wi,每次会有一个兔子胜出,然后它只一个萝卜质量 w + 1 w+1 w+1,每回合第 i i i 个兔子生出的概率为: w i ∑ j = 1 n w j \frac {w_i} {\sum_{j=1}^{n}w_j} ∑j=1nwjwi现在问 k k k天之后,兔子们体重的期望。
分析:
考虑 k k k天增长的体重总量为 k k k,所以第 i i i只兔子的体重期望为: w i + k ∗ w i ∑ j = 1 n w j w_i + k*\frac {w_i} {\sum_{j=1}^{n}w_j} wi+k∗∑j=1nwjwi
#include <iostream>
using namespace std;
const int maxn = 1000052;
long long int w[maxn], sum;
int main() {
int n, k, T;
cin >> T;
while (T--) {
cin >> n >> k;
sum = 0;
for (int i = 0; i < n; i++) {
scanf("%lld", &w[i]);
sum += w[i];
}
for (int i = 0; i < n; i++) {
if (i != 0) {
printf(" ");
}
printf("%lf", w[i] + w[i] * k * 1.0 / sum);
}
printf("\n");
}
return 0;
}