NKOJ 2127 搜集卡片 (数学期望+状态压缩+递推)

这篇博客探讨了如何运用数学期望和状态压缩的方法来解决童年时期搜集卡片的问题。通过输入卡片种类和每种卡片出现的概率,计算出收集完整套卡片所需的零食袋的期望数量。样例输入展示了如何处理2种卡片的情况,输出结果显示为10.500000。博主解释了使用状态压缩来表示已收集的卡片集合,并定义了F[S]来表示从状态S开始完成收集所需的零食期望值。
摘要由CSDN通过智能技术生成

P2127【概率】搜集卡片

问题描述

童年时代,你是否热衷于搜集零食里的卡片呢?比如你集齐了108张水浒英雄的卡片,你会感到非常有成就感,而且还可以去兑换奖品。

作为一个聪明的小孩,你注意到如果你要赢得奖品,你必须买很多很多的零食才能搜集齐卡片。要赢得奖品,你估计要买多少袋零食才能成功?

输入格式

第一行,一个整数N(1 <= N <= 20), 表示总共有N种不同的卡片。
第二行,N个空格间隔的实数p1, p2, …, pN, (p1 + p2 + … + pN <= 1), 表示零食袋中每种卡片出现的概率。
注意:一包零食中最多有一张卡片,也可能一张都没有。

输出格式

一个实数,表示你计算的结果,保留6位小数

样例输入

2
0.1 0.4

样例输出

10.500000


注意到n的范围,容易想到状态压缩。
用一个二进制数 S 表示当前已收集到的卡片集合。
F[S] 表示从状态 S 开始,收集完所有卡片需要买的零食的期望值。
那么买一袋零食,有

F[S]=1+(1p[i])×F
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值