博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu4089 概率dp
阅读量:6900 次
发布时间:2019-06-27

本文共 1118 字,大约阅读时间需要 3 分钟。

n个人排队,T在第m个位置,对于队列第一个人有以下四种情况:

1、激活失败,留在队列中等待下一次激活(概率为p1)

2、失去连接,出队列,然后排在队列的最后(概率为p2)

3、激活成功,离开队列(概率为p3)

4、服务器瘫痪,服务器停止激活,所有人都无法激活了

求服务器瘫痪时T在队列中的位置<=k的概率

dp[i][j]表示i个人排队,T站在j位置时的:最终瘫痪符合条件的概率

转移方程比较好想,程序里面也有

1 //j=1 dp[i][j]=p1*dp[i][j]+p2*dp[i][i]+p4;2 //j=[2,k] dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1]+p4;3 //j=[k+1,i] dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1];

关键在第一个方程用到了最后一个变量,表面上形成了环,实际上设最后一个为x,循环迭代代代代就解出dp[i][i]然后再回来接触dp[i][1-j]==

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 #define eps 1e-8 7 //j=1 dp[i][j]=p1*dp[i][j]+p2*dp[i][i]+p4; 8 //j=[2,k] dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1]+p4; 9 //j=[k+1,i] dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1];10 double dp[2005][2005],p[2005],p_jie[2005],c[2005];11 int main()12 {13 int n,m,k,i,j;14 double tp,p[5],tmp;15 while (~scanf("%d%d%d",&n,&m,&k))16 {17 for (i=1;i<=4;i++) scanf("%lf",&p[i]);18 19 if (p[4]
View Code

题目链接:

 

转载于:https://www.cnblogs.com/xiao-xin/articles/4320496.html

你可能感兴趣的文章
微信小程序 页面跳转navigator与传递参数
查看>>
常用正则表达式速查表
查看>>
Lua模式匹配
查看>>
poj 1251
查看>>
spring_3最小化Spring XML配置
查看>>
Struts 基础开发---day02
查看>>
Codeforces 456C - Boredom(简单DP)
查看>>
IE9 打不开界面也不报错,只有打开控制台才会显示 - console
查看>>
String,int,Integer,char 类型转换
查看>>
[LeetCode] Permutations II 解题报告
查看>>
20921进程的描述与控制
查看>>
int 和 Integer 有什么区别
查看>>
english单词笔记 001
查看>>
CPU和GPU的区别
查看>>
linux 打包 | autoconf 使用方法
查看>>
linux 上zookeeper安装
查看>>
JSON简介及Java对JSON的解析
查看>>
Candy
查看>>
CentOS 6.4 搭建 ntop 网络流量监控分析平台
查看>>
暑期第一弹<搜索> B - Dungeon Master(三维BFS,6个状态)
查看>>