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的主要内容,如果未能解决你的问题,请参考以下文章
UVA11181Probability|Given(条件概率)
UVA 11181 Probability|Given 数学 条件概率