- [Neerc2009] Inspection
[fixed] 本题你谷能过,但远端评测寄了
- 2023-6-5 9:24:35 @
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
- 上传者