1. 程式人生 > >【NOIP2012模擬10.31】擲骰子

【NOIP2012模擬10.31】擲骰子

Description

有兩個人在長度為N的數軸上走路。
每次每個人可以有相等的概率向前走1~m步。
如果超過N他會往回走(參考飛行棋)
先走到N的人贏。
現在先手在x,後手在y。
求先手贏的概率。
N,m,x,y<=2000

Solution

B組的一道題。
然而似乎特別難想。
於是一堆人決定上403去問(被裱)。
刷了一天SAM的我決定跟上去提高一下自己的姿勢水平。
然而突然發現自己似乎還沒有好好滴思考(看標程)
於是果斷回去想(kan)了一發。
然後突然靈稽一動,口胡出了一種似乎是正解的東西啊233
於是你可以腦補,接下來我給全部初中同學連講3發我口胡出來的DP的場景。
回來發現已經9:30了啊233
咳咳
我們可以考慮逆推。
F

i,j表示先手走到i後手走到j的概率。
那麼我們發現,如果走到可以反彈的範圍內的話,所有的狀態都是一樣的。
這個東西是一個無窮級數,是可以推出來的。
如果i,j都不在就是顯然的轉移,用二維字首和來優化。
剩下兩種情況就自己yy一下就好了。