zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
  • 相关阅读:
    Go语言v1.8正式发布,有显著的性能提升和变化(go适合服务器编程、网络编程)
    NET生成二维码
    组合模式
    Spring MVC
    前端事件
    Play Framework + ReactiveMongo
    DDD领域驱动设计初探
    jsRender模板引擎
    C#分布式缓存Couchbase
    ABP
  • 原文地址:https://www.cnblogs.com/Yuzao/p/7482460.html
Copyright © 2011-2022 走看看