题目
太郎和一只免子正在玩一个掷骰子游戏。有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时,谁就获胜了。游戏中还有一个规则“反弹”.就是当一位选手要走到第N格外时.他就会后退(就像飞行棋进营一样)。
假设现在一位追手在A格.当他掷出B时:
1.A+B<N,走到第A+B.络,
2.A+B=N,走到第N格,获胜。
3.A+B≥N,走到第(N-(A+B-N)格
现在太郎和兔子分别在第x和y格.接下来是太郎掷骰子,太郎想知道他赢得比赛的概率就多少。
分析
设 fi,j 表示太郎在i,兔子在j,太郎的胜率。我们从后往前转移。
我们分四种情况:
1、i+m<=n and j+m<=n
2、i+m>n and j+m<=n
3、i+m<=n and j+m>n
4、i+m>n and j+m>n
why?
因为发现,当 i+m>n 时,i怎么跳总是 i+m>n ,那么就可以把它们当做同一种状态。j也一样。
情况一:i+m<=n and j+m<=n
因为i走到k的概率为 1m ,j走到l的概率也为 1m ,
那么状态(i,j)的胜率就是状态(k,l)胜率的总和。
fi,j=1m2∑k=i+1i+m+1∑l=j+1j+m+1fk,l
情况二:i+m>n and j+m<=n
fi,j=(m−1)∑j+m+1