あなたは簡単に予想計算することができるように、各カードの検討は、それの確率を取得する
カードはそのラウンドのアカウントに関連し、考慮すべき回数を前の時点で考慮に選挙に関連するいくつかのカードをラウンド数をしながら、
メイクそう
を表し
ラウンド、第一
数ヶ月前と
選びました
確率
最終確率のうちカードであること
それに投票しない現行の選挙を列挙するために転送しました
#include<bits/stdc++.h>
#define cs const
using namespace std;
cs int N = 225;
int T, n, r;
double p[N]; int d[N];
double pw[N][N], f[N][N];
int main(){
scanf("%d", &T);
while(T--){
scanf("%d%d", &n, &r);
for(int i = 1; i <= n; i++){
scanf("%lf%d", &p[i], &d[i]);
pw[i][0] = 1;
for(int j = 1; j <= r; j++) pw[i][j] = pw[i][j - 1] * (1 - p[i]);
}
f[0][0] = 1;
for(int i = 1; i <= n; i++){
for(int j = 0; j <= r; j++){
f[i][j] = f[i - 1][j] * pw[i][r - j] + f[i - 1][j - 1] * (1 - pw[i][r - j + 1]);
}
} double ans = 0;
for(int i = 1; i <= n; i++){
double p = 0;
for(int j = 0; j < r; j++) p += f[i - 1][j] * (1 - pw[i][r - j]);
ans += p * d[i];
} printf("%.10lf\n", ans);
} return 0;
}