原题链接

3144 超级购物

题目大意

有 n(1≤n≤20)n\ (1\le n\le 20)n (1≤n≤20) 个人去逛商场,第 iii 个人在商场买东西的概率为 pi(0.1<pi<1)p_i(0.1< p_i<1)pi​(0.1<pi​<1)
他们逛完商场后,已知有 r(0≤r≤n)r(0\le r\le n)r(0≤r≤n) 个人买了东西,对每个人求他买了东西的概率。

解题思路

可以利用贝叶斯公式来分析 P(A),P(B),P(A∣B)P(A),P(B),P(A|B)P(A),P(B),P(A∣B) 之间的关系:
P(A∣B)=P(A∩B)P(B)=P(A)×P(B∣A)P(B)P(A|B )=\frac{P(A\cap B)}{P(B)}=\frac{P(A)\times P(B|A)}{P(B)}P(A∣B)=P(B)P(A∩B)​=P(B)P(A)×P(B∣A)​
如何求出这个公式的值?我们考虑使用类似解决背包问题的方法(可能是动规,也有可能是递推,我不知道)
假设 fi,jf_{i,j}fi,j​ 表示前 iii 个人中,jjj 个人进行了购物,那么,可以使用如下的方法进行转移:
fi,j=fi−1,j×(1−pi)+fi−1,j−1×pif_{i,j}=f_{i-1,j}\times (1-p_i)+f_{i-1,j-1}\times p_ifi,j​=fi−1,j​×(1−pi​)+fi−1,j−1​×pi​
也就表示,前 iii 个人中 jjj 个人进行购物的概率为:前 i−1i-1i−1 个人中 jjj 个人购物的概率乘上第 iii 个人不购物的概率(1−pi1-p_i1−pi​),再加上前 i−1i-1i−1 个人中 j−1j-1j−1 个人购物的概率乘上第 iii 个人购物的概率。(特殊情况:当在运算 P(第n2个人必须购物∣一共有n个人购物)P(第n_2个人必须购物|一共有n个人购物)P(第n2​个人必须购物∣一共有n个人购物) 枚举到前 n2n_2n2​ 个人时,因为最后还需要乘 pn2p_{n_2}pn2​​,所以本来 fi,j=fi−1,j×pn2f_{i,j}=f_{i-1,j}\times p_{n_2}fi,j​=fi−1,j​×pn2​​ 只需 fi,j=fi−1,jf_{i,j}=f_{i-1,j}fi,j​=fi−1,j​ 即可,至于为什么不用加 fi−1,j−1×pif_{i-1,j-1}\times p_ifi−1,j−1​×pi​ 是因为这是不购物的概率,而 n2n_2n2​ 这个人目前的假设是必须购物)

代码实现

#include<bits/stdc++.h>
using namespace std;
int n,r;
double p[100],f[100][100];
double work(int n2)
{//i表示前i个人,j表示有j个人购物 f[0][0]=1;//0个人中0个人购物的概率为1for(int i=1;i<=n;i++){//枚举前i个人购物if(i==n2){//必须购物的第n2个人for(int j=0;j<=min(i,r);j++)//特殊情况f[i][j]=f[i-1][j];continue;}f[i][0]=f[i-1][0]*(1-p[i]);//若j=0还j-1就会REfor(int j=1;j<=min(i,r);j++)//转移方程f[i][j]=f[i-1][j]*(1-p[i])+f[i-1][j-1]*p[i]; }if(n2==0)//当规定第0个人必须购物时,默认为求事件B的概率(所有人中有r个人购物的概率)return f[n][r];return f[n][r-1];//由于规定了第n2个人必须购物,只需要求出所有人中r-1个人购物的概率即可
}
int main()
{cin>>n>>r;for(int i=1;i<=n;i++){cin>>p[i];p[i]=p[i]/100.0;//给定的概率是按照百分比的形式给出的,所以需要除以100}double B=work(0);//求出事件B的概率for(int i=1;i<=n;i++)//求出第i个人购物的概率cout<<work(i)*p[i]/B<<" ";return 0;
}

样例

输入

3 2
10 20 30

输出

0.413043 0.739130 0.847826

注意:要求:用户输出与标准输出的绝对误差不超过1e-3

51nod 3144 超级购物相关推荐

  1. 【51nod 3144】超级购物【概率】

    linklinklink 分析: P(A∣B)=P(A∩B)P(B)P(A|B)=\frac{P(A∩B)}{P(B)}P(A∣B)=P(B)P(A∩B)​ BBB是选rrr个人 AAA是rrr个人中 ...

  2. 【51nod_3144】超级购物【期望】

    思路: 我们可以先求在n个人中有r个人买东西的概率,然后求出在这r个人中当且要求的人也在里面的概率,然后一除就是答案 至于求概率的过程要用dp实现 codecodecode #include<i ...

  3. 为什么所有的电商品牌,都愿意加入双十一购物狂欢节?

    作者:庐陵子村 全文共 3510 字,阅读需要 8 分钟 ---- / BEGIN / ---- 双十一购物狂欢节起源于2009年,如今"双十一"已经成为中国网购的标志性时刻,也是 ...

  4. 第12个双11,天猫的“造新”运动

    文 | 易牟 来源 | 螳螂财经(ID:TanglangFin) "今年的双11,直播怎么这么火?" 又到了一年一度的双11,女朋友的灵魂发问又开始了,吐槽归吐槽,购物车一点点被塞 ...

  5. 东南亚再造天猫 Lazada品牌商城LazMall举办第二届品牌未来论坛

    9月1日,东南亚领先的旗舰电商平台Lazada在新加坡滨海湾金沙会展中心举办了2021 LazMall Brands Future Forum年度品牌未来论坛(以下简称"BFF") ...

  6. 如何做一份好的竞品分析:商业WIFI竞品分析让你不再跳坑

    接触到产品经理这个岗位,无论你是初级PM还是高级PM对竞品都需要持续的去关注,这样你的产品才能再行业中占据优势.一份好的竞品分析主要来自行业和我们的竞争对手,好的产品合作才能由共赢,好的竞品分析只有切 ...

  7. 聊聊角色扮演探索式测试与肥皂剧模型

    这是鼎叔的第十一篇原创文章. 行业大牛和刚毕业的小白,都可以进来聊聊. 欢迎关注本人专栏和微信公众号<敏捷测试转型>,大量原创思考文章陆续推出. 鼎叔在MTSC-中国移动互联网测试开发大会 ...

  8. 2009年圣诞节活动策划方案(最新版)

    一. 活动名称:横店影视城圣诞狂欢节 http://www.shengdanjieliwu.com 二.活动时间:2005年12月24日.25日(周六.周日) 三.活动地点:国贸大厦.汴京大酒店.广州 ...

  9. 2022年最后一波旺季冲刺,亚马逊卖家要把握住这些关键时刻~

    距离2022年结束仅仅只剩75天,作为最后一波旺季的冲刺,绝不能放过. 亚马逊官方早早就为买家们罗列的全年的营销日历,卖家可以使用亚马逊大促日历及旺季备战技巧抢占,通过节假日.季节性销售季和亚马逊特定 ...

最新文章

  1. 阿里云推荐码:8N6TBT
  2. 网页客服机器人_易聊AI客服机器人强大线索获取能力助力企业稳操胜券
  3. HYSTRIX实现主线程和子线程的THREADLOCAL上下文传递
  4. C语言函数参数既做出参又做入参的代表
  5. Z-Stack通过按键中断实现长按功能
  6. matlab-线性代数 判断 det 矩阵是否可逆
  7. 鸿蒙-HI3516-Docker环境搭建编译烧录
  8. CSS 常用苹方字体
  9. 程序员(应届生)求职简历模板+LaTex(overleaf)简历制作+博士简历模板分享+简历赏析
  10. html5的video播放腾讯视频播放器,html 5中使用video元素制作一个影片播放器
  11. ValueError: Error initializing torch.distributed using tcp:// rendezvous: port number missing
  12. 如何理解移动端设计稿的计算问题(移动端屏幕适配和px转rem)
  13. 电影评论分类(python深度学习——二分类问题)
  14. 禁用和启用input元素
  15. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫
  16. substring与substr的区别
  17. 跳动的心html5,施华洛世奇跳动的心真假怎么分辨
  18. marquee相关属性
  19. python调用ansys_windows下用python调用HFSS
  20. 库克自愿降薪超 40%,年薪减至 4900 万美元

热门文章

  1. Unity 判断目标分辨率是16比9还是16比10
  2. Gurobi过期了怎么办
  3. 发电机是如何被发明的?又是如何工作的?
  4. 【Visual C++】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术:Direct3D渲染五步曲
  5. 电能管理系统运用互联网和大数据技术,如何实现电能管理
  6. android studio + bluestack
  7. 量化金融分析师CQF技术储备
  8. python 任务队列 huey_python huey中文文档(二)
  9. C语言求半径为8的圆周长和圆面积。
  10. “灾难无情人有情”:备战金三银四之微服务架构问题!(含解析)