社区讨论

求条玄关

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 条回复,欢迎继续交流。

正在加载回复...