Hdu 4336 Card Collector (容斥原理 循环)

来源:互联网 发布:unity3d shader mask 编辑:程序博客网 时间:2024/06/01 08:46

题意:有n种卡片,每种卡片 i 出现的概率为 pi ,一袋小吃有可能没有卡片,但最多有一张,问集齐所有卡片需要购买小吃的袋数期望。

思路:容斥原理,感觉循环写法更适合自己。

搜了下题解,也可以用状态压缩来做,附一份分析:http://www.2cto.com/kf/201308/236782.html

#include <cstdio>double data[25];int main (){int i,n;while (~scanf("%d",&n)){for (i=1;i<=n;i++)scanf("%lf",&data[i]);double ans=0;for (i=1;i<(1<<n);i++){int odd=0;double sum=0;for (int j=0;j<n;j++)if ((1<<j) & i){odd++;sum+=data[j+1];}if (odd & 1)  //加奇减偶ans+=1/sum;elseans-=1/sum;}printf("%.5lf\n",ans);}return 0;}


0 0