状压DP :F(S)=Sum*F(S)+p(x1)*F(S^(1<<x1))+p(x2)*F(S^(1<<x2))...+1;

F(S)表示取状态为S的牌的期望次数,Sum表示什么都不取得概率,p(x1)表示的是取x1的概率,最后要加一因为有又多拿了一次.整理一下就可以了。

 #include <cstdio>
const int Maxn=;
double F[<<Maxn],p[Maxn];
int n;
int main()
{
while (scanf("%d",&n)!=EOF)
{
double Sum=;
for (int i=;i<=n;i++) scanf("%lf",&p[i]),Sum+=p[i];
F[]=; Sum=-Sum; //Sum表示为空的概率. 状态位为1表示该张卡片还未取.
for (int i=;i<(<<n);i++)
{
double X=,Ret=;
for (int j=;j<=n;j++)
{
if (!(i&(<<(j-)))) X+=p[j];
else Ret+=p[j]*F[i^(<<(j-))];
}
X=X+Sum;
F[i]=(Ret+)/(-X);
}
printf("%.5lf\n",F[(<<n)-]);
}
return ;
}

状压DP

容斥原理: 若发生的概率为p,第一次发生的概率的期望是1/p,我感觉并不是很显然。

Prove:E=p+p(1-p)*2+p*(1-p)^2*3+...=pS

    S=1+(1-p)*2+(1-p)^3..=1/p^2

    ∴Ep=1

  那么两个发生的期望就为1/(p1+p2)

  三个发生的期望为1/(p1+p2+p3)

 #include <cstdio>
const int Maxn=;
double F[<<Maxn],p[Maxn];
int n;
int main()
{
while (scanf("%d",&n)!=EOF)
{
double Ans=;
for (int i=;i<=n;i++) scanf("%lf",&p[i]);
for (int i=;i<(<<n);i++)
{
double Sum=; int cnt=;
for (int j=;j<=n;j++)
if (i&(<<(j-)))
{
Sum+=p[j];
cnt++;
}
if (cnt&) Ans+=/Sum; else Ans-=/Sum;
}
printf("%.5lf\n",Ans);
}
return ;
}

容斥原理

HDU 4336 容斥原理 || 状压DP的更多相关文章

  1. 【bzoj2669】[cqoi2012]局部极小值 容斥原理+状压dp

    题目描述 有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次.如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值. 给出所有局部极小值的位置,你的任 ...

  2. HDU 4284Travel(状压DP)

    HDU 4284    Travel 有N个城市,M条边和H个这个人(PP)必须要去的城市,在每个城市里他都必须要“打工”,打工需要花费Di,可以挣到Ci,每条边有一个花费,现在求PP可不可以从起点1 ...

  3. #186 path(容斥原理+状压dp+NTT)

    首先只有一份图时显然可以状压dp,即f[S][i]表示S子集的哈密顿路以i为终点的方案数,枚举下个点转移. 考虑容斥,我们枚举至少有多少条原图中存在的边(即不合法边)被选进了哈密顿路,统计出这个情况下 ...

  4. HDU 3001 Travelling ——状压DP

    [题目分析] 赤裸裸的状压DP. 每个点可以经过两次,问经过所有点的最短路径. 然后写了一发四进制(真是好写) 然后就MLE了. 懒得写hash了. 改成三进制,顺利A掉,时间垫底. [代码] #in ...

  5. HDU - 5117 Fluorescent(状压dp+思维)

    原题链接 题意 有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态:问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和. 思路1.首先注意到N< ...

  6. [LuoguP2167][SDOI2009]Bill的挑战_容斥原理/状压dp

    Bill的挑战 题目链接:https://www.luogu.org/problem/P2167 数据范围:略. 题解: 因为$k$特别小,想到状压. 状压的方式也非常简单,就是暴力枚举. 但是会不会 ...

  7. hdu 4114(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4114 思路:首先是floyd预处理出任意两点之间的最短距离.dp[state1][state2][u] ...

  8. bzoj 3812: 主旋律 [容斥原理 状压DP]

    3812: 主旋律 题意:一张有向图,求它的生成子图是强连通图的个数.\(n \le 15\) 先说一个比较暴力的做法. 终于知道n个点图的是DAG的生成子图个数怎么求了. 暴力枚举哪些点是一个scc ...

  9. HDU 3091 - Necklace - [状压DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3091 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

随机推荐

  1. bean生命周期

    一.Bean的定义Spring通常通过配置文件定义Bean.如:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:s ...

  2. D​e​p​l​o​y​m​e​n​t​ ​f​a​i​l​u​r​e​ ​o​n​ ​T​o​m​c​a​t​ ​6​.​x​.​ ​C​o​u​l​d​ ​n​o​t​ ​c​o​p​y​ ​a​l​l​ ​r​e​s​o​u​r​c​e​s​ ​t​o

    在myeclipse总部署项目,一直有问题,提示如下的错误,经过研究在网上需求帮助,解决方案如下: Deployment failure on Tomcat  6.x. Could not copy  ...

  3. js判断是手机还是电脑访问网站

    js判断是手机还是电脑访问网站                               <script type="text/javascript"> <!- ...

  4. MEF的学习笔记

    为什么要使用MEF 在商业应用软件开发过程中,对于各个软件项目,都需要建立相应的系统框架,为了更好的规范系统的开发,提高生产效率,应该在公司级别制定相应的API标准.这些API标准将站在系统架构层次, ...

  5. windows php swoole 安装

    Cygwin 官方地址:http://www.cygwin.com/ swoole 官方下载地址:https://github.com/swoole/swoole-src/releases 1.下载 ...

  6. PHP分页类,生成分页html字符串

    <?php namespace Common\Common; /** * 该Page类主要有两个方法:showPageString(), showPageStringAsAJAX() * * s ...

  7. C——整型提升

    一.定义 integral promotion: "A character, a short integer, or an integer bit-field, all either sig ...

  8. Thymeleaf3.0内容

    Thymeleaf简介 什么是Thymeleaf Thymeleaf是网站或者独立应用程序的新式的服务端java模板引擎,可以执行HTML,XML,JavaScript,CSS甚至纯文本模板. Thy ...

  9. TEA(Tiny Encryption Algorithm)

    简介 TEA是一种简单高效的加解密算法,以速度快,实现简单著称.TEA算法每一次可以操作64-bit数据,采用128-bit作为key,算法采用迭代的形式,推荐的迭代轮数是64,最少32. 代码(默认 ...

  10. 用Curl测试POST

    POST请求 http://172.16.102.208:8089/wiapi/score?leaderboard_id=1&score=36&app_key=66 目的1:通过脚本发 ...