「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\) ...
随机推荐
- linux下性能监控工具
一. Linux 性能监控的概述 系统由若干子系统构成,通常改动一个子系统有可能影响到另外一个子系统.甚至会导致整个系统不稳定.崩溃. 所以说优化.监測.測试一般是连在一起的,并且是一个循环并且长期 ...
- jquery中this和$(this)使用的地方
插件中this代表$('元素')选择器 on()函数中this代表单个元素,$(this)代表单个选择器 反正有时代表整体,有时代表单个,代表单个时可以用$(this)来把他变成jquery对象
- spark之pycharm开发设置
方法一: __author__ = 'similarface' import os import sys os.environ['SPARK_HOME']="/Users/similarfa ...
- python 基础 2.1 if 流程控制(一)
一.if else 1.if 语句 if expression: //注意if后有冒号,必须有 statement(s) //相对于if缩进4个空格 注:pytho ...
- python 基础 2.6 for 循环 和if循环 中break
python中最基本的语法格式大概就是缩进了.python中常用的循环:for循环,if循环.一个小游戏说明for,if ,break的用法. 猜数字游戏: 1.系统生成一个20以内的随机数 2.玩家 ...
- 如何理解API,API 是如何工作的
大神博客:https://blog.csdn.net/cumtdeyurenjie/article/details/80211896
- 五个知识体系之-SQL学习-第二天
创建数据:INSERT INTO userinfo(userid,username,job,level1,companyage) VALUES ('001','xl001','test','P1',' ...
- 九度OJ 1013:开门人和关门人 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5052 解决:2563 题目描述: 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请 ...
- Python爬虫--Urllib库
Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url ...
- Objective-c中的delegate浅析
delegate初探 在ios开发中,我们常常会用到类似例如以下的对话框: 因此,例如以下这段代码我们也就非常熟悉了: - (IBAction)showSheet:(id)sender { UIAct ...