kuangbin的博客

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2005;
const double eps = 1e-10;
int n, m, k; double p1, p2, p3, p4;
double dp[2][MAXN], c[MAXN], pp[MAXN];
int main() {
while(~scanf("%d%d%d%lf%lf%lf%lf", &n, &m, &k, &p1, &p2, &p3, &p4)) {
if(p4 < eps) { puts("0.00000"); continue; }
double p = p2 / (1 - p1);
double p31 = p3 / (1 - p1);
double p41 = p4 / (1 - p1);
pp[0] = 1;
for(int i = 1; i <= n; ++i) pp[i] = pp[i-1] * p;
int now = 0;
dp[now][1] = p41 / (1 - p);
c[1] = p41;
for(int i = 2; i <= n; ++i) {
now ^= 1;
for(int j = 2; j <= k; ++j) c[j] = p31 * dp[now^1][j-1] + p41;
for(int j = k+1; j <= i; ++j) c[j] = p31 * dp[now^1][j-1];
double tmp = 0;
for(int j = 1; j <= i; ++j) tmp += pp[i-j] * c[j];
dp[now][i] = tmp / (1 - pp[i]);
dp[now][1] = p * dp[now][i] + c[1];
for(int j = 2; j < i; ++j) dp[now][j] = p * dp[now][j-1] + c[j];
}
printf("%.5f\n", dp[now][m]);
}
}
/*
j==1: dp[i][1]=p*dp[i][i]+p41;
2<=j<=k: dp[i][j]=p*dp[i][j-1]+p31*dp[i-1][j-1]+p41;
k<j<=i: dp[i][j]=p*dp[i][j-1]+p31*dp[i-1][j-1]; dp[i][j] = dp[i][j-1] * p + c[j]
*/

最新文章

  1. oc swizzling 真的好用
  2. 20150912华为机考2之&quot;输入一段字符串(英文),将每个单词首字母大写后输出&quot;
  3. CentOS 下安装JDK
  4. PC返回顶部浮动按钮
  5. 【转】C++ 类中的static,const,及引用类型的初始化
  6. golang byte转string 字节数组转字符串的问题
  7. jquery Tabs选项卡切换
  8. Linux SSL 双向认证 浅解
  9. 和为S的两个数
  10. dedecms环境优化
  11. WebApi 接口返回值类型详解 ( 转 )
  12. Docker学习笔记 - Docker容器内部署redis
  13. angularjs+ionic的app端分页和条件
  14. 编译原理作业(第一次)-完成retinf.c(阉割版)
  15. Python图片裁剪
  16. ovs常用操作
  17. JQ_下雪特效
  18. Delphi 的链式代码
  19. 实验三:C分支结构程序设计
  20. HDU 1199 &amp;amp;&amp;amp; ZOJ 2301 线段树离散化

热门文章

  1. 多个结果集union后保持各自原有排序
  2. Redis SETNX实现分布式锁
  3. 《Redis - 穿透/击穿/雪崩/集中失效》
  4. 将 PDF 论文的公式截图后转成 Word 可编辑公式(23)
  5. Python基础运算符(算数、比较、赋值、逻辑、成员)
  6. Linux下使用Vim粘贴文本错乱问题解决
  7. PAT甲级 图的遍历 相关题_C++题解
  8. 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy
  9. glib系列2 APP编译
  10. (二十一)SpringBoot之集成mybatis:使用mybatis xml