HDU 4336 Card Collector(容斥原理+状态压缩)
多校的题目,和网络赛那个多么的相似啊。。。枚举每个状态 含有奇数的期望-偶数卡的期望,就是最后的结果。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #define eps 1e-9 6 using namespace std; 7 double p[21]; 8 int main() 9 { 10 int n,num; 11 __int64 i,j; 12 double ans,t; 13 while(scanf("%d",&n)!=EOF) 14 { 15 for(i = 1;i <= n;i ++) 16 scanf("%lf",&p[i]); 17 ans = 0; 18 for(i = 1;i < 1<<n;i ++) 19 { 20 num = 0; 21 t = 0; 22 for(j = 0;j <= n-1;j ++) 23 { 24 if(i&(1<<j)) 25 { 26 t += p[j+1]; 27 num ++; 28 } 29 } 30 if(num%2) 31 ans += 1.0/t; 32 else 33 ans -= 1.0/t; 34 } 35 printf("%lf\n",ans+eps); 36 } 37 return 0; 38 }