hdu 4035 Maze (概率與期望DP)

2021-07-28 11:58:26 字數 2505 閱讀 8869

題目描述:一棵樹,乙個人初始在1號點。每次到達乙個點,有ki的概率被殺死,並且回到1號點,有ei的概率直接逃離,然後等概率的逃到與他相鄰的節點(1-ki-ei)/du[i],每次移動步數+1。 求逃出去的期望步數。

這道題與上面題的思想和方法是類似的。

我們先假設逃離是到達節點0, 那麼e[0]=0,倒著推。

對於葉子節點,他要麼逃到他的父親節點,要麼被殺,要麼直接逃離 e[

i]=(

1−ki

−ei)

∗e[f

a[i]

]+ki

∗e[1

]+e[

0]∗e

i 因為e[0]=0 ,所以式子最終可以化簡成e[

i]=(

1−ki

−ei)

∗e[f

a[i]

]+ki

∗e[1

]+(1

−ki−

ei)

那麼在這個式子中e[

fa[i

]],e

[1] 是未知量,那麼我們可以把式子化簡成 e[

i]=a

[i]∗

e[fa

[i]]

+b[i

]∗e[

1]+c

[i] 的形式。

對於非葉子節點 e[

i]=(

e[fa

[i]]

+1+∑

(e[s

on[i

]]+1

))∗(

1−ki

−ei)

du[i

]+e[

1]∗k

i 對於e[son[i]]來說,如果化成e[

i]=a

[i]∗

e[fa

[i]]

+b[i

]∗e[

1]+c

[i] 的形式,那麼我們可以發現e[

fa[s

on[i

]]] 實際上就是e[i],那麼我們可以對式子進行進一步的化簡。 e[

i]=(

e[fa

[i]]

+1+∑

(a[s

on[i

]]∗e

[i]+

b[so

n[i]

]∗e[

1]+c

[son

[i]]

+1))

∗(1−

ki−e

i)du

[i]+

e[1]

∗ki

我們設(1−

ki−e

i)du

[i]=

p[i]

式子整理得 (1

−p[i

]∗∑a

[son

[i]]

)∗e[

i]=p

[i]∗

e[fa

[i]]

+(ki

+p[i

]∗∑b

[son

[i]]

)∗e[

1]+(

1−ki

−ei)

+p[i

]∗∑c

[son

[i]]

最後把(1

−p[i

]∗∑a

[son

[i]]

) 除過來,就可以得到a[

i],b

[i],

c[i]

最後的答案就是c[

1]/(

1−b[

1])

注意在計算的過程中只要e[i]的係數趨近與0,那就是impossible

#include

#include

#include

#include

#include

#define n 200003

#define eps 1e-9

using

namespace

std;

int n,point[n],v[n],nxt[n],du[n],tot,t;

double a[n],b[n],c[n],k[n],e[n];

void add(int x,int y)

bool dfs(int x,int fa)

if (fabs(t)return

false;

a[x]/=t; b[x]/=t; c[x]/=t;

// couttrue;

}int main()

for (int i=1;i<=n;i++)

bool pd=dfs(1,0);

printf("case %d: ",t);

if (fabs(1.0-b[1])printf("impossible\n");

else

printf("%.6lf\n",c[1]/(1-b[1]));

}}

HDU 4035 Maze 樹形概率DP

題意 一棵樹,從結點1出發,在每個結點 i 都有3種可能 1 回到結點1 概率 ki 2 結束,概率 ei 3 隨機走一條邊。ki ei 隨機走 1 求到結束需要走的邊數的期望。假設e i 為點i到結束走邊數的期望,則有 以下m為點的度數 e i ki e 1 1 ei ki m e fa i 1 ...

hdu4035 Maze 期望dp 數學

bzoj4035 神題啊。orz 不過網上題解好難看,數學推導不寫 latex 怎麼看。latex中毒晚期 我們由題當然能很快寫出 dp 方程 設 f i 表示從 u 出發逃離的期望步數,m 為該點度數 begin f u k uf 1 frac sum limits f v 1 k uf 1 fr...

hdu4035 樹上概率dp

從葉子到根,帶入公式求引數 kuangbin hdu 4035 dp求期望的題。題意 有n個房間,由n 1條隧道連通起來,實際上就形成了一棵樹,從結點1出發,開始走,在每個結點i都有3種可能 1.被殺死,回到結點1處 概率為ki 2.找到出口,走出迷宮 概率為ei 3.和該點相連有m條邊,隨機走一條...