/*
题目大意:注册一款游戏需要排队,一共有四种事件:
1.注册失败,队列不变,概率为p1
2.注册过程中断开连接,正在注册的人排到队列的末尾,概率为p2
3.注册成功,移出队列,概率为p3
4.服务器暂停服务,概率为p4
求一个人他前面有不超过k-1个人的时候暂停服务的概率。
从前往后推,统计答案太麻烦,所以选择从后往前推。
dp(i,j)表示一共i个人,他排在j位置的达到目标状态的概率。
j==1 dp[i][j]=dp[i][j]*p1+dp[i][i]*p2+p4;
1<j<=k dp[i][j]=dp[i][j]*p1+dp[i][j-1]*p2+dp[i-1][j-1]*p3+p4;
j> k dp[i][j]=dp[i][j]*p1+dp[i][j-1]*p2+dp[i-1][j-1]*p3;
{i>=j}
化简:
j==1 dp[i][j]=dp[i][i]*p21+p41;
1<j<=k dp[i][j]=dp[i][j-1]*p21+dp[i-1][j-1]*p31+p41;
j> k dp[i][j]=dp[i][j-1]*p21+dp[i-1][j-1]*p31;
p=1-p1;
p21=p2/p;
p31=p3/p;
p41=p4/p;
dp[1][1]=dp[1][1]*p21+p41,得dp[1][1]=p41/(1-p21); j=1 dp[i][1]=dp[i][i]*p21+p41;
j=2 dp[i][2]=dp[i][1]*p21+dp[i-1][1]*p31+p41;
.................................................................................
j==k dp[i][k]=dp[i][k-1]*p21+dp[i-1][k-1]*p31;
j==k+1 dp[i][j]=dp[i][k]*p21+dp[i-1][k]*p31;
.................................................................................
j==i dp[i][i]=dp[i][i-1]*p21+dp[i-1][i-1]*p31;
可发现后面一部分都是常数项(递推过来已求出的),设后面一部分为c[j]
可以消元求解
ai=(((.....(((ai*p+c1)*p+c2)*p+c5)*p+c6*)............+ci)
ai=ai*p^i+c1*p^(i-1)+c2*p^(i-2)+.......+ci*p^0
可求出ai。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std; const double eps=1e-;
const int maxn=;
double dp[maxn][maxn];
double c[maxn];
double pp[maxn]={1.0}; int main()
{
int n,m,k,i,j;
double p0,p1,p2,p3,p4,p5,p6,p7;
while(~scanf("%d%d%d",&n,&m,&k))
{
scanf("%lf%lf%lf%lf",&p1,&p2,&p3,&p4);
if(fabs(p4)<eps){puts("0.00000");continue;}
p0=-p1;p5=p2/p0;p6=p3/p0;p7=p4/p0;
for(i=;i<=n;i++) pp[i]=pp[i-]*p5;
dp[][]=p7/(-p5);
c[]=p7;
for(i=;i<=n;i++)
{
for(j=;j<=i;j++)
{
c[j]=dp[i-][j-]*p6;
if(j<=k) c[j]+=p7;
}
double temp=0.0;
for(j=;j<=i;j++) temp+=c[j]*pp[i-j];
dp[i][i]=temp/(-pp[i]);
dp[i][]=p5*dp[i][i]+c[];
for(j=;j<i;j++)
dp[i][j]=p5*dp[i][j-]+c[j];
}
printf("%.5lf\n",dp[n][m]);
}
return ;
}

hdu 4089 概率dp的更多相关文章

  1. HDU 4599 概率DP

    先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...

  2. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  3. hdu 3853 概率dp

    题意:在一个R*C的迷宫里,一个人在最左上角,出口在右下角,在每个格子上,该人有几率向下,向右或者不动,求到出口的期望 现在对概率dp有了更清楚的认识了 设dp[i][j]表示(i,j)到(R,C)需 ...

  4. HDU 4815 概率dp,背包

    Little Tiger vs. Deep Monkey Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K ( ...

  5. hdu 4050(概率dp)

    算是挺简单的一道概率dp了,如果做了前面的聪聪于可可的话,这题不需要什么预处理,直接概率dp就行了... #include <stdio.h> #include <stdlib.h& ...

  6. HDU 4405 (概率DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 题目大意:飞行棋.如果格子不是飞行点,扔骰子前进.否则直接飞到目标点.每个格子是唯一的飞行起点 ...

  7. hdu 4336 概率dp + 状压

    hdu 4336 小吃包装袋里面有随机赠送一些有趣的卡片,如今你想收集齐 N 张卡片.每张卡片在食品包装袋里出现的概率是p[i] ( Σp[i] <= 1 ), 问你收集全部卡片所需购买的食品数 ...

  8. hdu 4576(概率dp+滚动数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4576 思路:由于每次从某一位置到达另一位置的概率为0.5,因此我们用dp[i][j]表示第i次操作落在 ...

  9. hdu 5001 概率DP 图上的DP

    http://acm.hdu.edu.cn/showproblem.php?pid=5001 当时一看是图上的就跪了 不敢写,也没退出来DP方程 感觉区域赛的题  一则有一个点难以想到 二则就是编码有 ...

随机推荐

  1. 图像压缩函数imagecopyresampled

    <?php //制作缩略图.图像压缩 //参数1:目的地图像资源(通常指的是画布资源) $dst_image = imagecreatetruecolor(100, 100); $color = ...

  2. JZOJ 1738. Heatwave

    Description 给你N个点的无向连通图,图中有M条边,第j条边的长度为: d_j. 现在有 K个询问. 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? I ...

  3. 43_2.VUE学习之--不使用组件computed计算属性超简单的实现美团购物车原理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 4、spring boot 配置文件之profile

    Profile  1.多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml 默认使用application.prop ...

  5. Python 外部函数调用库ctypes简介

    Table of Contents 1. 参考资料 2. ctypes简介 2.1. 数据类型 2.2. 调用.so/.dll 2.2.1. 加载动态链接库 2.2.2. 调用加载的函数 2.2.3. ...

  6. 0x01.被动信息收集

    被动信息收集 基于公开渠道,不与目标系统产生直接交互,尽量避免留下痕迹(不进行大量扫描,正常交互范围) 信息收集内容 IP段 域名 邮件地址(定位邮件服务器,分为个人搭建和公网邮件系统) 文档图片数据 ...

  7. Java-数据结构之二叉树练习

    本来这个随笔应该在4月17号就应该发出来的.不巧的是,那天晚上收到了offer,然后接下去两天为入职到处跑,20号入职后一直忙,直到最近几天才有时间看看书.然而20多天前就看完的了二叉树,然后17号那 ...

  8. js和CSS3炫酷3D相册展示

    <!doctype html> <html> <head> <meta charset="UTF"> <title>js ...

  9. 《Cracking the Coding Interview》——第17章:普通题——题目7

    2014-04-28 23:28 题目:给定一个数字,用英语把它读出来. 解法:ZOJ上有相反的题目.如果我要用中文读书来呢? 代码: // 17.7 Read an integer in Engli ...

  10. js限制文本框只能输入特定字符

    限制只能输入数字 // ---------------------------------------------------------------------- // <summary> ...