Probability dp/mathematical expectation/pressure dp/tolerance principle
The 14th question in Kuangbin summary
What a wonderful way to do it ... The kuangbin of the code to see the good ...
1 //hdoj 43362#include <cstdio>3 #defineRep (i,n) for (int i=0;i<n;++i)4 #defineF (i,j,n) for (int i=j;i<=n;++i)5 #defineD (i,j,n) for (int i=j;i>=n;--i)6 Const intn= A;7 8 Doublep[n],f[1<<N];9 intMain () {Ten intN; One while(SCANF ("%d", &n)! =EOF) { A Doublett=0.0; - Rep (i,n) { -scanf"%LF",&p[i]); thett+=P[i]; - } -tt=1-tt; -f[(1<<n)-1]=0; +D (I, (1<<n)-2,0){ - Doublex=0, sum=1.0; + Rep (j,n) A if(I & (1<<J)) x+=P[j]; at ElseSum+=p[j]*f[i| (1<<j)]; -f[i]=sum/(1-tt-x); - } -printf"%.5lf\n", f[0]); - } - return 0; in}
View Code (probability dp)
1 //hdoj 43362#include <cstdio>3 #defineRep (i,n) for (int i=0;i<n;++i)4 #defineF (i,j,n) for (int i=j;i<=n;++i)5 6 Doublep[ A];7 intMain () {8 intN;9 while(SCANF ("%d", &n)! =EOF) {TenRep (i,n) scanf ("%LF",&p[i]); One Doubleans=0; A for(intI=1;i< (1<<n); + +i) { - intCnt=0;Doublesum=0; -Rep (J,n)if(i& (1<<j)) { thesum+=P[j]; -cnt++; - } - if(cnt&1) ans+=1.0/sum; + Elseans-=1.0/sum; - } +printf"%.5lf\n", ans); A } at return 0; -}
View Code (Repulsion principle)
"Hdoj" "4336" Card Collector