「UVA11181」 Probability|Given(概率
题意翻译
有n个人要去买东西,他们去买东西的概率为p[i]。
现在得知有r个人买了东西,在这种条件下,求每个人买东西的概率。
感谢@s_r_f 提供翻译
题目描述
输入输出格式
输入格式:
输出格式:
输入输出样例
3 2
0.10
0.20
0.30
5 1
0.10
0.10
0.10
0.10
0.10
0 0
Case 1:
0.413043
0.739130
0.847826
Case 2:
0.200000
0.200000
0.200000
0.200000
0.200000
题解
这个题面在讲什么鬼话?!!!(气哭
设$E$表示事件"有$r$个人买了东西",$E_i$表示事件"第$i$个人买了东西".
则根据公式,$P(E_i|E)=P({E_i}E)/P(E)$.
问题转化为求$P(E)$和求$P({E_i}E)$.
对于$P(E)$,用$dfs$枚举每个人买了与否.
设$dfs$到了第$i$个人,在它之前的人买与否构成的组合的概率为$now$,
那么若第$i$个人买,概率为$now*p[i]$,否则为$now*(1-p[i])$.
递推下去就好了.
当$dfs$到了第$n$个人,且正好有$r$个人买了,
那么$P(E)+=now$.
然后就是求$P({E_i}E)$了.
其实也差不多,只是多了一个"第$i$个人必须买"的限制,所以在$dfs$的时候强制第$i$个人买就行了.
qwerta
UVA11181 Probability|Given Accepted
代码 C++,.79KB
提交时间 -- ::
耗时/内存 200ms, 0KB #include<iostream>
#include<cstdio>
using namespace std;
double p[];
double pe;
int n,r;
void dfs(int x,int d,double now)
{
if(d>r)return;
if(x==n+)
{
if(d==r)
pe+=now;
return;
}
//mark
dfs(x+,d+,now*p[x]);
//dismark
dfs(x+,d,now*(-p[x]));
return;
}
double pei;
void dfss(int x,int d,int i,double now)
{
if(d>r)return;
if(x==n+)
{
if(d==r)
pei+=now;
return;
}
if(x==i)
{dfss(x+,d+,i,now*p[x]);return;}
//mark
dfss(x+,d+,i,now*p[x]);
//dismark
dfss(x+,d,i,now*(-p[x]));
return;
}
int main()
{
ios::sync_with_stdio(false);
int tim=;
while(cin>>n>>r)
{
if(n==)break;
printf("Case %d:\n",++tim);
for(int i=;i<=n;++i)
cin>>p[i];
pe=;
dfs(,,);
for(int i=;i<=n;++i)
{
pei=;
dfss(,,i,);
printf("%.6f\n",pei/pe);
}
}
return ;
}
「UVA11181」 Probability|Given(概率的更多相关文章
- LOJ2537. 「PKUWC2018」Minimax【概率DP+线段树合并】
LINK 思路 首先暴力\(n^2\)是很好想的,就是把当前节点概率按照权值大小做前缀和和后缀和然后对于每一个值直接在另一个子树里面算出贡献和就可以了,注意乘上选最大的概率是小于当前权值的部分,选最小 ...
- loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】
题目链接 loj2537 题解 观察题目的式子似乎没有什么意义,我们考虑计算出每一种权值的概率 先离散化一下权值 显然可以设一个\(dp\),设\(f[i][j]\)表示\(i\)节点权值为\(j\) ...
- 「UVA557」 Burger(概率
本题征求翻译.如果你能提供翻译或者题意简述,请 提交翻译 ,感谢你的贡献. 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 3 6 10 256 输出样例# ...
- 「UVA1636」Headshot(概率
题意翻译 你有一把枪(左轮的),你随机装了一些子弹,你开了一枪,发现没有子弹,你希望下一枪也没有子弹,你是应该直接开一枪(输出"SHOOT"),还是先转一下,再开一枪(输出&quo ...
- LOJ2541. 「PKUWC2018」猎人杀 [概率,分治NTT]
传送门 思路 好一个神仙题qwq 首先,发现由于一个人死之后分母会变,非常麻烦,考虑用某种方法定住分母. 我们稍微改一改游戏规则:一个人被打死时只打个标记,并不移走,也就是说可以被打多次但只算一次.容 ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #2542. 「PKUWC2018」随机游走
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...
- 「ZJOI2017」树状数组(二维线段树)
「ZJOI2017」树状数组(二维线段树) 吉老师的题目真是难想... 代码中求的是 \(\sum_{i=l-1}^{r-1}a_i\),而实际求的是 \(\sum_{i=l}^{r}a_i\),所以 ...
- 「ZJOI2015」地震后的幻想乡 解题报告
「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...
随机推荐
- ARM内核和架构
转:深入浅谈,CPU设计原理 CPU的内部架构和工作原理 推荐一本书:编码的奥秘 一.ARM内核和架构 ARM产品越来越丰富,命名也越来越多.很多朋友提问: ARM内核和架构都是什么 ...
- HBase——完全分布
实际上,在真实环境中你需要使用完全分布配置完整测试HBase.在一个分布式配置中,集群有多个节点,每个节点运行一个或多个HBase守护进程.其中包括主Master和备份Master实例,多个Zooke ...
- HP Vertica Analytics Platform 评測
1.vertica概念 面向数据分析的数据仓库系统解决方式 2.vertica关键特性 Ø 标准的SQL接口:能够利用已有的BI.ETL.Hadoop/MapReduce和OLTP环境 Ø 高可用 ...
- Chrome自带恐龙小游戏的源码研究(五)
在上一篇<Chrome自带恐龙小游戏的源码研究(四)>中实现了障碍物的绘制及移动,从这一篇开始主要研究恐龙的绘制及一系列键盘动作的实现. 会眨眼睛的恐龙 在游戏开始前的待机界面,如果仔细观 ...
- 使用Excel2007去反复功能时要注意的一个问题
作者:iamlaosong Excel2007有个去反复功能(菜单:数据----删除反复项).非常实用,过去须要用VBA编程实现的功能,如今点击一下图标即可了.去反复通常是指定某列或者某几列.依据这指 ...
- TOML简介 (转)
TOML的由来 配置文件的使用由来已久,从.ini.XML.JSON.YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升. TOML是前GitHub CEO, Tom Prest ...
- Java带标签的break 和带标签的continue
最开始没有学习java 学习的是C语言然后工作开始用java,但当时并没有仔细看过java的书籍,也是大致一翻就看跟C语言很像,了解了基本语法就没有深究了,今天看书开始发现之前没有了解过的语法 带标签 ...
- FAT12中,如何定位大于一个扇区(512B)的文件内容
[0]README 0.1)本文旨在于 演示在FAT12中, 如何取定位大于 512B 的文件内容,和查看它: 0.2)如何制作FAT12文件系统,以及如何向文件中添加temp.txt文件,参见: { ...
- Encoding::CompatibilityError: incompatible character encodings: GBK and UTF-8
直接grunt serve读的css是.tmp/css/main.css 而这个文件不通过build生成出来是这样: /* Encoding::CompatibilityError: incompat ...
- windows下MySQL 5.7+ 解压缩版安装配置方法(转,写的很简单精辟 赞)
方法来自伟大的互联网. 1.去官网下载.zip格式的MySQL Server的压缩包,根据需要选择x86或x64版.注意:下载是需要注册账户并登录的. 2.解压缩至你想要的位置. 3.复制解压目录下m ...