hihocode 1506 投掷硬币
来源:互联网 发布:金蝶软件技术服务 编辑:程序博客网 时间:2024/05/01 22:55
描述
小Hi有一枚神奇的硬币。已知第i次投掷这枚硬币时,正面向上的概率是Pi。
现在小Hi想知道如果总共投掷N次,其中恰好M次正面向上的概率是多少。
输入
第一行包含两个整数N和M。
第二行包含N个实数P1, P2, … PN。
对于30%的数据,1 <= N <= 20
对于100%的数据,1 <= N <= 1000, 0 <= M <= N, 0 <= Pi <= 1
输出
输出一行一个实数表示恰好M次正面向上的概率。注意行末需要包含一个换行符’\n’。
输出与标准答案误差在0.001以内都被视为正确。
样例输入
2 10.5 0.5
样例输出
0.500000
dp[i][j]表示 i次投,j次正面朝上。
#include <iostream>#include <algorithm>#include <iostream>#include <cstdio> #include <cstring>using namespace std;const int maxn = 1e3+50;double a[maxn], dp[maxn][maxn];int main(){ int n,m; while( scanf("%d%d",&n,&m) != EOF){ for(int i=1;i<=n;i++) scanf("%lf",a+i); dp[0][0] = 1, dp[0][1] = 0; for(int i=1;i<=n;i++){ dp[i][0] = dp[i-1][0]*(1.0-a[i]); for(int j=1;j<=i;j++){ dp[i][j] = dp[i-1][j]*(1.0-a[i]) + dp[i-1][j-1]*a[i]; } } printf("%lf\n",dp[n][m]); } return 0;}
0 0
- hihocode 1506 投掷硬币
- 投掷硬币
- 【hihocoder #1506 : 投掷硬币】递推
- hihocoder#1506 : 投掷硬币(概率DP)
- FlipsMax(投掷硬币实验)
- 投掷硬币(动态规划)
- 如何通过投掷一枚硬币产生各种概率
- 模拟投掷硬币,出现正反面的次数(…
- 贝叶斯告诉你,投掷硬币概率可以是90%
- 【matlab】小游戏:用MATLAB编程验证——投掷硬币那“0.5”
- 投掷骰子
- 投掷筛子
- 投掷模板
- hihocode 1228
- 硬币
- 硬币
- 硬币
- 硬币
- Java实现验证码的制作
- SQLyogEnt解决中文乱码
- MySQL数据库
- java中HashMap的嵌套用例
- 设计模式总结(面试必问二)
- hihocode 1506 投掷硬币
- 遗忘---bootstrap(响应式框架)
- 第2章:变量,数据类型,运算符
- eclipse解决导入文件中文乱码
- mipmap和drawable文件夹的区别
- Matlab studying~(2)常用的内部函数2。
- 我遇到的解决方案Failed to create the part's controls
- KNN算法介绍
- 文章标题 Frogger