uva11181Probability|Given
枚举,条件概率。
2^20次方等于100w,是大约可以没准还能过的。
二进制枚举时,如果买东西的人恰好为r个,设概率为p,就将sum[i]+=p(sum[i]为r个人买东西时第i个人买东西的概率),tot+=p(tot为r个人买东西的概率)
要求的就是sum[i]/tot。
P(第i个人实际买东西)=P(r个人买东西且第i个人在其中)/P(r个人买东西)。
r为0时特判
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 20 + 10;
int n,r,N,cnt,kase;
double a[maxn],sum[maxn];
double tot,p; int main() {
kase=0;
while(scanf("%d%d",&n,&r)==2) {
printf("Case %d:\n",++kase);
if(!n&&!r) break;
for(int i=0;i<n;i++) scanf("%lf",&a[i]);
if(!r) {
for(int i=0;i<n;i++) printf("0.000000\n");
continue;
}
N=1<<n;
memset(sum,0,sizeof(sum)); tot=0;
for(int i=1;i<N;i++) {
cnt=0; p=1;
for(int j=0;j<n;j++) {
if(i&(1<<j)) {cnt++; p*=a[j];}
else p*=(1-a[j]);
}
if(cnt==r) {
for(int j=0;j<n;j++) if(i&(1<<j)) sum[j]+=p;
tot+=p;
}
}
for(int i=0;i<n;i++) printf("%.6lf\n",sum[i]/tot);
}
return 0;
}
uva11181Probability|Given的更多相关文章
- UVA11181Probability|Given(条件概率)
题目链接 紫书P327 题意:有n个人准备去超市逛,其中第i个人买东西的概率是 Pi .逛完以后你得知有 r 个人买了东西.根据这一信息,计算每个人实际买东西的概率.输入 n ( 1 <= n ...
随机推荐
- windows下编译ffmpeg
windows 编译ffmpeg 搞过很多次,每次总是磕磕碰碰,从头到尾不能一直顺利,浪费一些时间.终究起原因,都是当时记得,过段时间就忘了.好记性不如烂笔头,大好周末晚上,闲暇无事,记录最近一次编译 ...
- 【转载】关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些 ...
- 【机器学习】BP神经网络实现手写数字识别
最近用python写了一个实现手写数字识别的BP神经网络,BP的推导到处都是,但是一动手才知道,会理论推导跟实现它是两回事.关于BP神经网络的实现网上有一些代码,可惜或多或少都有各种问题,在下手写了一 ...
- SVN库实时同步设置
为了安全起见,SVN服务器除了做定时全量备份和增量备份以外,如条件允许,可做实时备份. 这需要2台机器,一台是master server,另一台做mirror server.master做主服务,mi ...
- .bash_profile备份
# ~/.bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User sp ...
- 任务调度 QUARTZ
任务调度在目前的JAVA应用程序中运用的十分普遍,故掌握QUARTZ是必备的技能 闲话少说,上官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 commo ...
- 140304笔记, mysql 更改自动增长字段值的重新设定
1. 存在同名的或不同的namespace交错情况. Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no result m ...
- Javascript通过className选择元素
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- String类的使用 Part2
StringBuilder 类的使用 属性: namespace StringBuilderTest { class Program { static void Main(string[] args) ...
- Android 虚拟机安装SD卡
在cmd命令行下,进入platform-tools目录下. 1.创建sdcard mksdcard -l mycard 256M E:\android\myCards\mysdcard.img ...