HDU 3853 LOOPS

概率dp嘛。。今天无意间说错话了,竟然问figo会不会概率dp。。。Sigh。。

据我大figo所说,概率dp只要会高中那些概率知识就完全可以做了,听到这里我第一个想法是:

其实我高中概率也不会啊。。。Sigh。。高考119情何以堪。。

好吧,可能求期望的题会“比较”好理解一些?

由已知的期望推未知的期望,说白了注意点“单位”就行了,就是期望=sum((期望+实验结果)*概率)

#define X 1010
#include<iostream>
using namespace std;
double p0[X][X],p1[X][X],p2[X][X];
double dp[X][X];
int main(){
	int i,j,n,m;
	while(~scanf("%d%d",&n,&m)){
		for(i=1;i<=n;i++)
		    for(j=1;j<=m;j++)
		        scanf("%lf%lf%lf",&p0[i][j],&p1[i][j],&p2[i][j]);
		for(i=n;i>0;i--)
		    for(j=m;j>0;j--){
				dp[i][j]=p0[i][j]*2+p1[i][j]*(dp[i][j+1]+2)+p2[i][j]*(dp[i+1][j]+2);
				if(p0[i][j]==1)dp[i][j]=0;
				else           dp[i][j]/=1-p0[i][j];
			}
		printf("%.3lf\n",dp[1][1]);
	}
	return 0;
}
		    


不经意看了下榜,发现站在了第一页,不过代码长度是最短的大笑

你可能感兴趣的:(概率DP)