UVA11181条件概率 Probability|Given

2024-02-12 06:52

本文主要是介绍UVA11181条件概率 Probability|Given,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

条件概率 Probability|Given - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

样例解释:

需要学习条件概率贝叶斯定理 

//1 2 -		0.1*0.2*(1-0.3)  == 0.014
//1 - 3		0.1*0.8*0.3 == 0.024
//- 2 3		0.9*0.2*0.3 == 0.054
//						   0.092//(0.014+0.024)/0.092 == 0.413043

包含1的概率 除以 所有情况的概率之和  就是1买到东西的概率

(所有情况是这里r==2时的所有情况)

接下来可以欣赏洛谷题解了。

代码:

我用的状态压缩(即二进制表示)来做的。

暴力r符合的情况做统计,就是根据上面贝叶斯公式来计算。

double arr[25] = { 0 };
double dp[25][1ll << 20];
signed main()
{//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;//cin >> t;//for (int i = 1; i <= t; i++)//{//	solve(i);//}int n, r;int round = 1;while (1){cin >> n >> r;if (n == 0 && r == 0)break;for (int i = 0; i < n; i++){cin >> arr[i];}double asum = 0;double sum[22] = { 0 };for (int i = 0; i < (1ll<<20); i++){//如果是r个int cnt = 0;for (int j = 0; j < n; j++){if ((i >> j & 1) == 1)cnt++;}if (cnt != r)continue;double tmp = 1;for (int j = 0; j < n; j++){if ((i >> j & 1) == 1)tmp *= arr[j];elsetmp *= (1 - arr[j]);}for (int j = 0; j < n; j++){if ((i >> j & 1) == 1){sum[j] += tmp;}}asum += tmp;}cout << "Case "<< round++ << ":" << endl;for (int i = 0; i < n; i++){printf("%.6lf\n", sum[i] / asum);}}return 0;
}

这篇关于UVA11181条件概率 Probability|Given的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701940

相关文章

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

hdu4865(概率DP)

题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。 思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )  代码如下: #include <stdio.h>#include

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

Kernel 中MakeFile 使用if条件编译

有时需要通过if  else来选择编译哪个驱动,单纯的obj-$(CONFIG_)就不是很方便,下面提供两种参考案例: 案例一: 来源:drivers/char/tpm/Makefileifdef CONFIG_ACPItpm-y += tpm_eventlog.o tpm_acpi.oelseifdef CONFIG_TCG_IBMVTPMtpm-y += tpm_eventlog.o

shell循环sleep while例子 条件判断

i=1# 小于5等于时候才执行while [ ${i} -le 5 ]doecho ${i}i=`expr ${i} + 1`# 休眠3秒sleep 3doneecho done 参考 http://c.biancheng.net/cpp/view/2736.html