hdu 4089 Activation(概率dp)
来源:互联网 发布:宝宝哭声辨别软件 编辑:程序博客网 时间:2024/04/30 21:02
莫名其妙的内存超了。。。。
/**转自kuangbin概率DP;设dp[i][j]表示i个人排队,Tomato排在第j个位置,达到目标状态的概率(j<=i)dp[n][m]就是所求j==1: dp[i][1]=p1*dp[i][1]+p2*dp[i][i]+p4;2<=j<=k: dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1]+p4;k<j<=i: dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1];化简: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];其中:p=p2/(1-p1);p31=p3/(1-p1)p41=p4/(1-p1)可以循环i=1->n 递推求解dp[i].在求解dp[i]的时候dp[i-1]就相当于常数了。在求解dp[i][1~i]时等到下列i个方程j==1: dp[i][1]=p*dp[i][i]+c[1];2<=j<=k:dp[i][j]=p*dp[i][j-1]+c[j];k<j=i: dp[i][j]=p*dp[i][j]+c[j];其中c[j]都是常数了。上述方程可以解出dp[i]了。首先是迭代得到 dp[i][i].然后再代入就可以得到所有的dp[i]了。注意特判一种情况。就是p4<eps时候,就不会崩溃了,应该直接输出0*/#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>using namespace std;//typedef __int64 lld;#define oo 0x3f3f3f3f#define Mod 1000000007#define maxn 2020#define Exp 1e-5double dp[maxn][maxn];double c[maxn];double P[maxn];int main(){ double p1,p2,p3,p4; int N,M,K; while(scanf("%d %d %d %lf %lf %lf %lf",&N,&M,&K,&p1,&p2,&p3,&p4)!=EOF) { if(p4<Exp) { printf("0.00000\n"); continue; } double p=p2/(1.0-p1); double p41=p4/(1.0-p1); double p31=p3/(1.0-p1); P[0]=1.0; for(int i=1;i<=N;i++) P[i]=P[i-1]*p; dp[1][1]=p41/(1.0-p); c[1]=p41; for(int i=1;i<=N;i++) { for(int j=2;j<=K;j++) c[j]=p31*dp[i-1][j-1]+p41; for(int j=K+1;j<=i;j++) c[j]=p31*dp[i-1][j-1]; double temp=c[1]*P[i-1]; for(int j=2;j<=K;j++) temp+=c[j]*P[i-j]; for(int j=K+1;j<=i;j++) temp+=c[j]*P[i-j]; dp[i][i]=temp/(1.0-P[i]); dp[i][1]=p*dp[i][i]+c[1]; for(int j=2;j<i;j++) dp[i][j]=p*dp[i][j-1]+c[j]; } printf("%.5lf\n",dp[N][M]); } return 0;}
0 0
- hdu 4089 Activation(概率dp)
- hdu 4089 Activation(概率dp)
- Hdu 4089 Activation(概率DP)
- HDU 4089 Activation (概率DP )
- hdu 4089 Activation(概率dp)
- HDU-4089 Activation(概率DP)
- HDU 4089 Activation(概率dp)
- HDU 4089 Activation(概率DP)
- hdu 4089 Activation 概率DP
- 概率dp-hdu-4089-Activation
- [HDU 4089]Activation[概率DP]
- 概率dp HDU 4089 Activation
- hdu-4089-Activation-概率dp
- 【HDU】 4089 Activation 概率DP
- hdu 4089 Activation 概率dp
- 概率DP hdu 4089 Activation
- HDU 4089 Activation(概率DP)
- HDU 4089 Activation 概率dp
- ACM-HDU1870愚人节的礼物(栈初步练习)
- Single Number
- 保留尾部*
- PL/SQL 运算符(Operator)
- Caffe 深度学习框架上手教程
- hdu 4089 Activation(概率dp)
- linux2.6.29 CFS调度详细分析(一)
- Struts 1 配置文件
- unity3d 关于c#命名空间引用问题
- Eclipse出现 you must restart adb and eclipse的解决办法
- linux 硬盘分区和挂载详解
- TCP/IP卷一 ARP协议
- 分享
- Android学习笔记——资源文件