hdu 3076 ssworld VS DDD (概率dp)
///題意:
/// A,B擲骰子,對於每一次點數大者勝,平為和,A先勝了m次A贏,B先勝了n次B贏。
///p1表示a贏,p2表示b贏,p=1-p1-p2表示平局
///a贏得概率 比一次p1 兩次p0*p1 三次 p0^2*p1,即A贏的概率為p1+p*p1+p^2*p1+...p^n*p1,n->無窮
///即a_win=p1/(1-p);b_win=p2/(1-p);
///dp[i][j]表示a贏了j次,b贏了i次的概率
///dp[i][j]=dp[i-1][j]*b_win+dp[i][j-1]*a_win;
///ps:(兩人的血量要換一換,數據錯了)
# include
# include
# include
# include
using namespace std;
double dp[2010][2010];
int main()
{
int i,j,n,m;
double p1,p2,p,a_win,b_win,a[10],b[10];
while(~scanf("%d%d",&m,&n))
{
for(i=1; i<=6; i++)
scanf("%lf",&a[i]);
for(i=1; i<=6; i++)
scanf("%lf",&b[i]);
a_win=0;
b_win=0;
for(i=2; i<=6; i++)
{
for(j=1; j0)
dp[i][j]+=dp[i][j-1]*a_win;
if(i>0)
dp[i][j]+=dp[i-1][j]*b_win;
}
}
double ans=0;
for(i=0; i1)
ans=1;
printf("%.6lf\n",ans);
}
return 0;
}