HDU-4089 Activation (概率DP求概率)
题目大意:一款新游戏注册账号时,有n个用户在排队。每处理一个用户的信息时,可能会出现下面四种情况:
1.处理失败,重新处理,处理信息仍然在队头,发生的概率为p1;
2.处理错误,处理信息到队尾重新排队,发生的概率为p2;
3.处理成功,队头信息处理成功,出队,发生的概率为p3;
4.服务器故障,队伍中所有信息丢失,发生的概率为p4;
小明现在在队伍中的第m个位置,问当他前面的信息条数不超过k-1时服务器故障的概率。
题目分析:这道题的状态转移方程不难写。定义状态dp(i,j)表示在有 i 个人的队伍中,他排在第 j 个位置时到达要求状态的概率。则状态转移方程为:
dp(i,1)=p1*dp(i,1)+p2*dp(i,i)+p4
dp(i,j)=p1*dp(i,j)+p2*(i,j-1)+p3*dp(i-1,j-1)+p4 (2<=j<=k)
dp(i,j)=p1*dp(i,j)+p2*(i,j-1)+p3*dp(i-1,j-1) (k<j<=i)
整理一下,并另p21=p2/(1-p1),p31=p3/(1-p1),p41=p4/(1-p1),则得到:
dp(i,1)=p21*dp(i,i)+p41
dp(i,j)=p21*dp(i,j-1)+p31*dp(i-1,j-1)+p41 (2<=j<=k)
dp(i,j)=p21*dp(i,j-1)+p31*dp(i-1,j-1) (k<j<=i)
这样就可以通过递推求解。
为了书写方便,把上面的三个转移方程用两个方程表示出来:
dp(i,1)=p21*dp(i,i)+c(1)
dp(i,j)=p21*dp(i,j-1)+c(j) (2<=j<=i)
dp(i,i)可以通过迭代得到:
(1-p21^i)dp(i,i)=∑(p21^(i-j))*c(j) (1<=j<=i)
ps:得加特判,否则会WA!!。。。
代码如下:
# include<iostream>
# include<cstdio>
# include<cmath>
# include<cstring>
# include<algorithm>
using namespace std; const double eps=1e-5; int n,m,k;
double p1,p2,p3,p4;
double dp[2005][2005]; int main()
{
while(~scanf("%d%d%d",&n,&m,&k))
{
scanf("%lf%lf%lf%lf",&p1,&p2,&p3,&p4);
if(p4<eps){
printf("0.00000\n");
continue;
}
double p21=p2/(1-p1);
double p31=p3/(1-p1);
double p41=p4/(1-p1);
dp[1][1]=p41/(1-p21);
for(int i=2;i<=n;++i){
dp[i][i]=0;
for(int j=1;j<=i;++j){
if(j==1) dp[i][i]+=pow(p21,i-j)*p41;
else if(j>=2&&j<=k) dp[i][i]+=pow(p21,i-j)*(p31*(dp[i-1][j-1])+p41);
else dp[i][i]+=pow(p21,i-j)*p31*dp[i-1][j-1];
}
dp[i][i]/=(1-pow(p21,i));
for(int j=1;j<i;++j){
if(j==1) dp[i][j]=p21*dp[i][i]+p41;
else if(j>=2&&j<=k) dp[i][j]=p21*dp[i][j-1]+p31*dp[i-1][j-1]+p41;
else dp[i][j]=p21*dp[i][j-1]+p31*dp[i-1][j-1];
}
}
printf("%.5lf\n",dp[n][m]);
}
return 0;
}
HDU-4089 Activation (概率DP求概率)的更多相关文章
- CoderForce 148D-Bag of mice (概率DP求概率)
题目大意:美女与野兽在玩画鸽子的游戏.鸽子在用黑布遮住的笼子里,白色的有w只,黑色的有b只,每次拿出一只作画,谁先画到白色的鸽子谁就赢.美女首先画,因为野兽太丑,它每次画的时候都会吓跑一只鸽子,所有出 ...
- HDU3853-LOOPS(概率DP求期望)
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Su ...
- HDU 4089 Activation(概率DP)(转)
11年北京现场赛的题目.概率DP. 公式化简起来比较困难....而且就算结果做出来了,没有考虑特殊情况照样会WA到死的.... 去参加区域赛一定要考虑到各种情况. 像概率dp,公式推出来就很容易写 ...
- [HDU 4089]Activation[概率DP]
题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
- HDU 4089 Activation 概率DP 难度:3
http://acm.hdu.edu.cn/showproblem.php?pid=4089 这道题中一共有两个循环: 1.事件1 如果一直落在Activation failed事件上,那么就会重新继 ...
- HDU 4089 Activation:概率dp + 迭代【手动消元】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4089 题意: 有n个人在排队激活游戏,Tomato排在第m个. 每次队列中的第一个人去激活游戏,有可能 ...
- HDU 3853 LOOP (概率DP求期望)
D - LOOPS Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...
- HDU 4405 Aeroplane chess (概率DP求期望)
题意:有一个n个点的飞行棋,问从0点掷骰子(1~6)走到n点须要步数的期望 当中有m个跳跃a,b表示走到a点能够直接跳到b点. dp[ i ]表示从i点走到n点的期望,在正常情况下i点能够到走到i+1 ...
随机推荐
- MyEclipse8.5集成Tomcat7
我最近需要在MyEclipse中使用Tomcat7,已经在Servers中配置了本地的Tomcat路径,之后发布项,在MyEclipse启动Tomcat服务则出现如下错误提示: Exception i ...
- Program L 暴力求解
Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...
- [网络技术]VPN设置
1.解决VPN服务器默认路由困扰 现在移动办公已经变得家常便饭,每次外出出差办公需要访问单位的内网服务器时,该怎么办呢?相信很多人都想到了VPN连接!的确,使用VPN连接, 我们可以利用现成的Inte ...
- IOS界面切换
好吧!表示这几天要实现 phonegap 打开IOS原生界面,因此也查询了一些方案. 有如下几种: 第一种:navigationcontroller //进入下层 [self.navigationC ...
- MySQL校对规则(三)
校对规则:在当前编码下,字符之间的比较顺序是什么? ci:不区分大小写,Cs区分大小写, _bin 编码比较 每个字符集都支持不定数量的校对规则,可以通过如下指令: show collation 可以 ...
- 对比学习UIKit和AppKit--入门级
UIKit是用来开发iOS的应用的,AppKit是用来开发Mac应用的,在使用过程中他们很相似,可是又有很多不同之处,通过对比分析它们的几个核心对象,可以避免混淆. UIKit和AppKit都有一个A ...
- IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html 先看效果图: 在自定义导航栏背景时,可能会遇到以下一些问题: 1.当设置 ...
- python黑帽子源码
https://www.nostarch.com/download/BHP-Code.zip https://yunpan.cn/cPvLPWMTdWJRu 访问密码 4243
- php生成图片
//生成图片,第一个参数宽,第二个高 1.$image = imagecreatetruecolor(100,25); //生成颜色,当第一次调用生成颜色的方法,是生成背景颜色 2.$backgrou ...
- 使用busybox构建根文件系统
当我们在Qemu上运行起来自己编译的内核之后,需要使用busybox构建一个文件系统,将此文件系统挂载上去就可以使用busybox提供的各种命令了. 1.编译安装busybox 源码下载地址:http ...