社区讨论
求条玄关
P3239[HNOI2015] 亚瑟王参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mlkkixxh
- 此快照首次捕获于
- 2026/02/13 15:30 6 天前
- 此快照最后确认于
- 2026/02/16 14:55 3 天前
Record: https://www.luogu.com.cn/record/262855864
CPP#include<bits/stdc++.h>
using namespace std;
const int N=225;
double v[N],r[N];
double dp[N][N],dp2[N][N];
int n,m;
double ksm(double x,int y){
double re=1;
while (y){
if (y%2) re*=x;
x*=x;
y>>=1;
}
return re;
}
double f[N];
double ans;
int main(){
int t;
cin>>t;
while (t--){
ans=0;
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>v[i]>>r[i],r[i]*=1.0;
memset(dp,0,sizeof(dp));
memset(f,0,sizeof(f));
dp[1][0]=ksm(1.0-v[1],m),dp[1][1]=f[1]=1.0-dp[1][0];
for (int i=2;i<=n;i++)
for (int j=0;j<=min(i,m);j++){
if (i!=j) dp[i][j]=dp[i-1][j]*ksm(1.0-v[i],m-j);
if (j) dp[i][j]+=(dp[i-1][j-1])*(1.0-ksm(1.0-v[i],m-j+1));
if (j!=i) f[i]+=dp[i-1][j]*(1.0-ksm(1.0-v[i],m-j));
}
for (int i=1;i<=n;i++) ans+=f[i]*r[i];
printf("%.10lf",ans);
}
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...