HDU 4035 Maze 樹形概率DP

2022-05-09 01:54:11 字數 1814 閱讀 3765

題意:一棵樹,從結點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)若i為葉子節點.

=ki*e(1)+(1-ki-ei)*e(father)+(1-ki-ei) 

e[i]=ki*e[1]+(1-ei-ki)/m*(e[fa[i]]+1)+(1-ei-ki)/m*(sum(e[son[i]]+1))i不為葉子節點

=ki*e(1)+(1-ki-ei)/m *e(father)+(1-ki-ei)/m*sum(e(child))+(1-ki-ei)  作為1式

我們發現,這樣求非常麻煩,若是n小一點大可用高斯消元求解,可這題的n為10000,無法用高斯消元。

對於每個e[i],我們令e[i]=ai*(e[1])+bi*(e[fa[i]])+ci

e[child]=aj*e[1]+bj*e[i]+cj

sum(e[child])=sum(aj*e[1]+bj*e[i]+cj)

帶入1式:ki*e(1)+(1-ki-ei)/m *e(father)+(1-ki-ei)/m*sum(aj*e[1]+bj*e[i]+cj)+(1-ki-ei)

可得:(ki+(1-ki-ei)/m*sum(aj))*e(1)+(1-ki-ei)/m *e(father)+(1-ki-ei+(1-ki-ei)/m*sum(cj))

與剛才的e[i]=ai*(e[1])+bi*(e[fa[i]])+ci對比一下發現:

ai=(ki+(1-ki-ei)/m*sum(aj))

bi=(1-ki-ei)/m 

ci=(1-ki-ei+(1-ki-ei)/m*sum(cj))

對於葉子節點,有

ai=ki

bi=1-ki-ei

ci=1-ki-ei

倒推即可,還有,

e(1)=a1*e(1)+b1*0+c1

e(1)=c1/(1-a1)

若是上述式子中的分母出現0則無解。

1 #include2 #include3 #include4 #include5 #include6

const

double eps=1e-9;7

int tot,go[500005],first[500005],next[500005];8

double a[500005],b[500005],c[500005],k[500005],e[500005];9

int n,du[500005

];10

void insert(int x,int y)

11void add(int x,int

y)12

bool dfs(int x,int

fa)27

if (fabs(tmp-1)<=eps) return

false

;28 a[x]/=(1-tmp);

29 b[x]/=(1-tmp);

30 c[x]/=(1-tmp);

31return

true;32

}33intmain()

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

53 printf("

case %d:

",tcase);

54if (dfs(1,0)&&fabs(1-a[1])>eps)

57else60}

61 }

hdu 4035 Maze (概率與期望DP)

題目描述 一棵樹,乙個人初始在1號點。每次到達乙個點,有ki的概率被殺死,並且回到1號點,有ei的概率直接逃離,然後等概率的逃到與他相鄰的節點 1 ki ei du i 每次移動步數 1。求逃出去的期望步數。這道題與上面題的思想和方法是類似的。我們先假設逃離是到達節點0,那麼e 0 0,倒著推。對於...

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條邊,隨機走一條...