zoukankan      html  css  js  c++  java
  • uva11181Probability|Given

    枚举,条件概率。

    2^20次方等于100w,是大约可以没准还能过的。

    二进制枚举时,如果买东西的人恰好为r个,设概率为p,就将sum[i]+=p(sum[i]为r个人买东西时第i个人买东西的概率),tot+=p(tot为r个人买东西的概率)

    要求的就是sum[i]/tot。

    P(第i个人实际买东西)=P(r个人买东西且第i个人在其中)/P(r个人买东西)。

    r为0时特判

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn = 20 + 10;
    int n,r,N,cnt,kase;
    double a[maxn],sum[maxn];
    double tot,p;
    
    int main() {
        kase=0;
        while(scanf("%d%d",&n,&r)==2) {
            printf("Case %d:
    ",++kase);
            if(!n&&!r) break;
            for(int i=0;i<n;i++) scanf("%lf",&a[i]);    
            if(!r) {
                for(int i=0;i<n;i++) printf("0.000000
    ");    
                continue;
            }
            N=1<<n;
            memset(sum,0,sizeof(sum)); tot=0;
            for(int i=1;i<N;i++) {
                cnt=0; p=1;
                for(int j=0;j<n;j++) {
                    if(i&(1<<j)) {cnt++; p*=a[j];}
                    else p*=(1-a[j]);
                }
                if(cnt==r) {
                    for(int j=0;j<n;j++) if(i&(1<<j)) sum[j]+=p;
                    tot+=p;
                }
            }
            for(int i=0;i<n;i++) printf("%.6lf
    ",sum[i]/tot);
        }    
        return 0;    
    }
  • 相关阅读:
    背景透明,文字不透明
    判断数组类型
    前端工作流程自动化——Grunt/Gulp 自动化
    tools安装
    总结
    CSS Hack
    getBoundingClientRect()兼容性处理
    Math.random获得随机数
    spring RestTemplate 工程导入
    系统架构演变
  • 原文地址:https://www.cnblogs.com/invoid/p/5575467.html
Copyright © 2011-2022 走看看