• UVA 11427 Expect the Expected


    解题报告:由于每天晚上垂头丧气的概率都相同,设为Q,那么可以分开处理,DP算出Q
    设f[i][j]表示一共打了i场,赢了j场的概率
    (f[i][j]=f[i-1][j-1]*p+f[i-1][j]*(1-p))
    最后(Q=sum_{i=0}^nf[n][i](i<=n*p))
    最后答案即为1/Q,详细证明见蓝书

    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    #define RG register
    #define il inline
    #define iter iterator
    #define Max(a,b) ((a)>(b)?(a):(b))
    #define Min(a,b) ((a)<(b)?(a):(b))
    using namespace std;
    const int N=105;
    double f[N][N];int CNT=0;
    void work()
    {
    	memset(f,0,sizeof(f));
    	int a,b,n;
    	scanf("%d/%d%d",&a,&b,&n);
    	double p=(double)a/(b*1.0);
    	f[0][0]=1;
    	for(int i=1;i<=n;i++){
    		for(int j=0;j*b<=i*a;j++){
    			f[i][j]=f[i-1][j]*(1-p);
    			if(j)f[i][j]+=f[i-1][j-1]*p;
    		}
    	}
    	double tot=0;
    	for(int i=0;i*b<=a*n;i++)tot+=f[n][i];
    	int ans=1/tot;
    	printf("Case #%d: %d
    ",CNT,ans);
    }
    
    int main()
    {
    	int T;cin>>T;
    	while(T--)CNT++,work();
    	return 0;
    }
    
    
  • 相关阅读:
    Tinkoff Challenge
    Uva 12298 超级扑克2
    BZOJ 1031 字符加密
    HDU 4944 逆序数对
    51nod 1215 数组的宽度
    LA 3126 出租车
    LA 3415 保守的老师
    51nod 1275 连续子段的差异
    Uva 11419 我是SAM
    LA 4043 最优匹配
  • 原文地址:https://www.cnblogs.com/Yuzao/p/7482460.html
Copyright © 2020-2023  润新知