题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望

思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_{i = 1}^{k}pi) * [1 + E(x)]$,即能转换到x情况的期望+x情况原地踏步的期望。

因为n比较小,我们可以直接状压来表示dp[x]为x状态时集齐的期望。那么显然dp[111111111] = 0。然后我们状态反向求解。最终答案为dp[0]。

然后来看期望的求解:$E(x) = \sum_{i = 1}^{k}pi * [1 + E(xi)] + (1 - \sum_{i = 1}^{k}pi) * [1 + E(x)]$,E(xi)是E(x)某一位0变成1后的期望。

化简后:$E(x) = (\sum_{i = 1}^{k}pi * E(xi) + 1) / \sum_{i = 1}^{k}pi$

题解

代码:

#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include <iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 20 + 5;
const int M = maxn * 30;
const ull seed = 131;
const int INF = 0x3f3f3f3f;
const int MOD = 1e4 + 7;
double dp[1 << maxn];
double p[maxn];
int main(){int n;while(~scanf("%d", &n)){
//        for(int i = 0; i < (1 << n); i++) dp[i] = 0;for(int i = 0; i < n; i++){scanf("%lf", &p[i]);}dp[(1 << n) - 1] = 0;for(int i = (1 << n) - 2; i >= 0; i--){double sump = 0, sumpe = 0;for(int j = 0; j < n; j++){if(!(i & (1 << j))){sump += p[j];sumpe += p[j] * dp[i | (1 << j)];}}dp[i] = (sumpe + 1) / sump;}printf("%.6f\n", dp[0]);}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/10987317.html

HDU 4336 Card Collector(状压 + 概率DP 期望)题解相关推荐

  1. BZOJ2246 SDOI2011 迷宫探险(状压+概率dp)

    题面太长了,贴起来好麻烦,走链接吧: P2489 [SDOI2011]迷宫探险 题目指向状压.自然地考虑用二进制表示状态,0为无害,1为有害.紧接着会发现,当我们走到某个点 ( x, y ) 时,我们 ...

  2. [BZOJ2246][SDOI2011]迷宫探险(状压概率DP)

    1.DP模型 用33进制数表示陷阱的状态,00表示无害,11表示有害,22表示未知.可建立DP模型: f[x][y][S][h]f[x][y][S][h]表示从(x,y)(x,y)开始,当前陷阱的状态 ...

  3. hdu 4336 Card Collector

    题意: 买零食凑卡片的游戏,浪费钱. 给出每包粮食含有某一张卡片的概率,当然也可能什么也没有. 问凑齐一套卡片的买的零食的数量的期望. 思路: 求期望,那么倒着dp. 因为n只有20,所以考虑用状态压 ...

  4. P2473 奖励关 状压概率DP求期望

    题目链接 https://www.luogu.com.cn/problem/P2473 题意 n轮,m种球,每轮随即一个球,可以接可以不接,接的话需要满足这个球的前置条件(比如3号球接球必须已经接过1 ...

  5. HDU 4336 Card Collector(容斥原理+状态压缩)

    题目连接 多校的题目,和网络赛那个多么的相似啊...枚举每个状态 含有奇数的期望-偶数卡的期望,就是最后的结果. 1 #include <iostream> 2 #include < ...

  6. HDU 3001 三进制状压DP

    HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...

  7. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

  8. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

  9. Tunnels HDU - 4856 (bfs状压dp)

    Tunnels HDU - 4856 Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his ...

最新文章

  1. How to create DBFS file system
  2. 考考大家的数学,计算以下计算公式的结果
  3. Vuex与登录状态保存
  4. Bellman-Ford算法和SPFA算法
  5. call,apply,bind的用法与区别
  6. 基础线性规划实现(matlab,lingo)
  7. 【洛谷 P3299】 [SDOI2013]保护出题人 (凸包,三分,斜率优化)
  8. 垃圾分类小程序,云开发 (附源码)
  9. 迁移到MySQL的语法转换工具初步设计
  10. 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
  11. flutter 接入微信客服
  12. 网络爬虫--记一次有趣的侦察型反爬手段(ebay)
  13. 素数:素数判断、找素数、计算素数和、素数求和
  14. python画图大全_python画图教程
  15. git Husky 搭配 commitizen ,规范代码提交
  16. 销售培训的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 网络ID,广播地址,掩码位数计算
  18. Raphael绘制流程图(一),添加可拖动的图形
  19. 关于基因家族的全基因组鉴定和表达分析的研究步骤
  20. 视频教程-清华-尹成老师-java基础-Day18-Java

热门文章

  1. MySQL判断字符串是否是数字
  2. 数学6年级测试软件,苏教版数学六年级下册2018年小学六年级毕业测试试卷(无答案).doc...
  3. linux内核实现片选跳变,《Linux内核设计与实现》读书笔记:进程调度
  4. 东财计算机应用基础在线作业一,东财《计算机应用基础》综合作业
  5. 打印冻结窗格怎么保证每页都有_在打印Excel表时怎么设置才能实现每页都打印标题行...
  6. IDEA两步删除版本控制
  7. Android开发笔记(九十九)圆形转盘
  8. Android开发笔记(五十四)数据共享接口ContentProvider
  9. 【jQuery实例】Ajax登录页面
  10. 在Hyper-V主机中支持VLAN