hdu1204 Markov隨機過程

2021-07-29 22:25:43 字數 1449 閱讀 5249

這是乙個概率題,首先我們必須清楚我們要求的是什麼!

設f(i)表示speakless有i顆糖果的時候贏的概率,我們要求的就是f(n)

則根據題意我們知道,這時候:

1.speakless贏這一局的概率是p(1-q),即f(i)變成f(i+1)

2.speakless輸這一局的概率是q(1-p),即f(i)變成f(i-1)

3.speakless平這一局的概率是1-p(1-q)-q(1-p),即f(i)變成f(i)

因此:

f(i) = p(1-q)*f(i+1) + q(1-p)*f(i-1) + (1-p(1-q)-q(1-p))*f(i)

稍微變形:

p(1-q)(f(i+1)-f(i)) = q(1-p)(f(i)-f(i-1))令g(i)=f(i)-f(i-1),

則有p(1-q)*g(i) = q(1-p)g(i-1),即g(i)是等比數列,

設k=q(1-p)/(p(1-q)),則g(i) = k*g(i-1)

g(1) = f(1)-f(0)

g(2) = f(1)-f(0)

… g(n) = f(n)-f(n-1)

… g(n+m) = f(n+m)-f(n+m-1)

將上面的各個等式相加的:g(1)+g(2)+…+g(n+m)=f(n+m)-f(0)=1

g(1)+g(2)+…+g(n+m)=g(1)*(1-k^(n+m))/(1-k)

g(1)+g(2)+…+g(n)=g(1)*(1-k^(n))/(1-k)

回到開始定義,我們知道f(0)=0 (表示已經輸了),f(n+m)=1(表示已經贏了)

g(1)=f(1)-f(0)=f(1)

因此g(1)+g(2)+…+g(n+m) = f(1)*(1-k^(n+m))/(1-k)=1……………………………………..(1)

g(1)+g(2)+…+g(n) = f(1)*(1-k^(n))/(1-k)=f(n)……………………………………………(2)

我們要求的就是f(n),在(2)式中,只是f(1)是未知的,因此需要根據(1)先求出f(1).最終f(n)=(1-k^n)/(1-k^(m+n))需要注意的幾個地方:n==0、m==0、p==0、q==0、p==q集中特殊情況!

**很簡單,如下:

#include 

#include

#include

using

namespace

std;

int main()

if(m==0)

if(p==0||q==1)

if(q==0||p==1)

if(p==q) rate=1.0*n/(m+n); //m,n不一定等於0.5

else

cout

<2)}

return

0;}

HDU 1204 糖果大戰 Markov過程

題意 生日party結束的那天晚上,剩下了一些糖果,gandon想把所有的都統統拿走,speakless於是說 可以是可以,不過我們來玩24點,你不是已經拿到了一些糖果了嗎?這樣,如果誰贏一局,就拿走對方一顆糖,直到拿完對方所有的糖為止。如果誰能算出來而對方算不出來,誰就贏,但是如果雙方都能算出或者...

Markov隨機場(MRF)和條件隨機場(CRF)

在講mrf和crf之前,我們先來看看隨機場又是什麼意思?一 隨機場 簡單來說,隨機場可以看作是一組對應於同一樣本空間的隨機變數的集合。一般來說,這些隨機變數之間存在依賴關係,也只有當它們之間存在依賴關係的時候,我們才會將其單獨拿出來看成乙個隨機場才有實際意義。二 markov隨機場 mrf mrf ...

HDU3868 HASH 隨機增量

求點集中兩兩之間距離之和最小的三個點 在使用增量法過程中,我們需要對於新加入的點是否能夠構成新的答案進行高效的判定。假設當前集合的答案為r,對於新加入的點,我們發現如果這個點能夠與原集合中另外兩點構成新的最近的三個點的話,那麼另外的兩個點與這個新加入的點的距離一定不超過r 2,證明如下 假設當前新加...