UVa11181 Probability|Given

Posted wsmrxc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa11181 Probability|Given相关的知识,希望对你有一定的参考价值。

暴力算概率即可。

用这个式子:P(Ai|B)=P(AiB)/P(B)

不过。。貌似有递推的常数做法?

 

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 20 + 1;

int N, R;
double p[MAXN], a[MAXN];

inline int bitcount(int x)
{return x == 0 ? 0 : (x & 1) + bitcount(x >> 1);}

int main()
{
    int t = 0;
    while(cin>>N>>R, (N + R))
    {
        for(int i = 0; i < N; i++) scanf("%lf", &p[i]);
        memset(a, 0, sizeof(a));

        printf("Case %d:
", ++t);
        if(R == 0) {
            for(int i = 0; i < N; i++) puts("0.000000");
            continue;
        }

        double rp = 0.0;
        for(int state = 0; state < (1 << N); state++)
        {
            int cnt = bitcount(state);
            if(cnt != R) continue;

            double tmp = 1.0;
            for(int i = 0; i < N; i++)
                if(state & (1 << i)) tmp *= p[i];
                else tmp *= (1 - p[i]);
            rp += tmp;
            for(int i = 0; i < N; i++) 
                if(state & (1 << i)) a[i] += tmp;
        }

        for(int i = 0; i < N; i++) printf("%.6lf
", a[i] / rp);
    }
    return 0;
}

 

以上是关于UVa11181 Probability|Given的主要内容,如果未能解决你的问题,请参考以下文章

uva 11181 Probability|Given

UVA11181Probability|Given(条件概率)

UVA 11181 Probability|Given 数学 条件概率

UVA 11181 Probability|Given

「UVA11181」 Probability|Given(概率

UVA - 11181 Probability|Given (条件概率)