poj 1644概率dp

xiaoxiao2021-02-28  122

#include<cstdio> #include<cstring> #define MAX(x,y) ((x)>(y)?(x):(y)) #define INF 0x3f3f3f3f double dp[60][60]; int d[60]; char str[60][60]; int main() { int T; scanf("%d",&T); while(T--) { int m,t; char str[60]; scanf("%d%d",&m,&t); memset(d,0,sizeof(d)); for(int i=1;i<=m;i++) { scanf("%s",str); if(str[0]!='L') sscanf(str,"%d",&d[i]); else d[i]=INF; } memset(dp,0,sizeof(dp)); dp[0][0]=1; d[m+2]=-1; double ans=0; for(int i=0;i<t;i++) { for(int j=0;j<=m;j++) { if(d[j+1]==INF) dp[i+2][j+1]+=dp[i][j]*0.5; else dp[i+1][j+1+d[j+1]]+=dp[i][j]*0.5; if(d[j+2]==INF) dp[i+2][j+2]+=dp[i][j]*0.5; else dp[i+1][j+2+d[j+2]]+=dp[i][j]*0.5; } ans+=dp[i+1][m+1]; } if(ans==0.5) printf("Push. 0.5000\n"); else if(ans>0.5) printf("Bet for. %.4f\n",ans); else printf("Bet against. %.4f\n",ans); } }
转载请注明原文地址: https://www.6miu.com/read-33018.html

最新回复(0)