HDU 4336 Card Collector(状压 + 概率DP 期望)题解
题意:每包干脆面可能开出卡或者什么都没有,一共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 期望)题解相关推荐
- BZOJ2246 SDOI2011 迷宫探险(状压+概率dp)
题面太长了,贴起来好麻烦,走链接吧: P2489 [SDOI2011]迷宫探险 题目指向状压.自然地考虑用二进制表示状态,0为无害,1为有害.紧接着会发现,当我们走到某个点 ( x, y ) 时,我们 ...
- [BZOJ2246][SDOI2011]迷宫探险(状压概率DP)
1.DP模型 用33进制数表示陷阱的状态,00表示无害,11表示有害,22表示未知.可建立DP模型: f[x][y][S][h]f[x][y][S][h]表示从(x,y)(x,y)开始,当前陷阱的状态 ...
- hdu 4336 Card Collector
题意: 买零食凑卡片的游戏,浪费钱. 给出每包粮食含有某一张卡片的概率,当然也可能什么也没有. 问凑齐一套卡片的买的零食的数量的期望. 思路: 求期望,那么倒着dp. 因为n只有20,所以考虑用状态压 ...
- P2473 奖励关 状压概率DP求期望
题目链接 https://www.luogu.com.cn/problem/P2473 题意 n轮,m种球,每轮随即一个球,可以接可以不接,接的话需要满足这个球的前置条件(比如3号球接球必须已经接过1 ...
- HDU 4336 Card Collector(容斥原理+状态压缩)
题目连接 多校的题目,和网络赛那个多么的相似啊...枚举每个状态 含有奇数的期望-偶数卡的期望,就是最后的结果. 1 #include <iostream> 2 #include < ...
- HDU 3001 三进制状压DP
HDU 3001 三进制状压DP N个城市,M条道路,每条道路有其经过的代价,每一个城市最多能够到达两次,求走全然部城市最小代价,起点随意. 三进制状压.存储每一个状态下每一个城市经过的次数. 转移方 ...
- 插头DP 概率DP / 期望DP
插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...
- hdu 4778 Gems Fight! 状压dp
转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...
- Tunnels HDU - 4856 (bfs状压dp)
Tunnels HDU - 4856 Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his ...
最新文章
- How to create DBFS file system
- 考考大家的数学,计算以下计算公式的结果
- Vuex与登录状态保存
- Bellman-Ford算法和SPFA算法
- call,apply,bind的用法与区别
- 基础线性规划实现(matlab,lingo)
- 【洛谷 P3299】 [SDOI2013]保护出题人 (凸包,三分,斜率优化)
- 垃圾分类小程序,云开发 (附源码)
- 迁移到MySQL的语法转换工具初步设计
- 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
- flutter 接入微信客服
- 网络爬虫--记一次有趣的侦察型反爬手段(ebay)
- 素数:素数判断、找素数、计算素数和、素数求和
- python画图大全_python画图教程
- git Husky 搭配 commitizen ,规范代码提交
- 销售培训的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 网络ID,广播地址,掩码位数计算
- Raphael绘制流程图(一),添加可拖动的图形
- 关于基因家族的全基因组鉴定和表达分析的研究步骤
- 视频教程-清华-尹成老师-java基础-Day18-Java
热门文章
- MySQL判断字符串是否是数字
- 数学6年级测试软件,苏教版数学六年级下册2018年小学六年级毕业测试试卷(无答案).doc...
- linux内核实现片选跳变,《Linux内核设计与实现》读书笔记:进程调度
- 东财计算机应用基础在线作业一,东财《计算机应用基础》综合作业
- 打印冻结窗格怎么保证每页都有_在打印Excel表时怎么设置才能实现每页都打印标题行...
- IDEA两步删除版本控制
- Android开发笔记(九十九)圆形转盘
- Android开发笔记(五十四)数据共享接口ContentProvider
- 【jQuery实例】Ajax登录页面
- 在Hyper-V主机中支持VLAN