https://www.luogu.com.cn/record/112074498

#include <bits/stdc++.h>
using namespace std;
const int N=230;
const int R=140;

long double qpow(long double x,int y) {
	long double z=1.0;
	for(;y;y>>=1) {
		if(y&1) z=z*x;
		x=x*x;
	}
	return z;
}

int T,n,r;
long double p[N];
int d[N];
long double ans;
long double dp[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]);
		}
		for(int i=1;i<=n;i++) {
			for(int j=0;j<=n;j++) {
				dp[i][j]=0;
			}
		}
		dp[0][0]=1;
		for(int i=1;i<=n;i++) {
			for(int j=0;j<=min(r,i);j++) {
				dp[i][j]+=dp[i-1][j]*qpow(1-p[i],r-j);
				if(j) dp[i][j]+=dp[i-1][j-1]*(1.0-qpow(1-p[i],r-j+1));
			}
		}
		ans=0;
		for(int i=1;i<=n;i++) {
			for(int j=0;j<min(r,i);j++) {
				ans+=d[i]*dp[i-1][j]*(1.0-qpow(1-p[i],r-j));
			}
		}
		printf("%.10Lf\n",ans);
	}
	return 0;
}

0 条评论

目前还没有评论...

信息

ID
2175
时间
1000ms
内存
256MiB
难度
10
标签
(无)
递交数
1
已通过
1
上传者