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 }

 

posted @ 2012-09-30 21:19  Naix_x  阅读(209)  评论(0编辑  收藏  举报