SHOI2014 概率充電器 (樹形DP)

2021-09-11 23:38:53 字數 1512 閱讀 6639

題目

這個題。。。

如果我們只考慮從兒子到父親的傳輸電,之後可以再用乙個dfs從上至下更新父親對兒子的貢獻。

但是這個題需要求的是概率而非期望(直接算期望不好求),就沒有那些什麼線性性:

p (a

∣b)=

p(a)

+p(b

)−p(

a)∗p

(b

)p(a|b) = p(a) + p(b) - p(a) * p(b)

p(a∣b)

=p(a

)+p(

b)−p

(a)∗

p(b)

p (a

)=p(

a∣b)

−p(b

)1−p

(b

)p(a)=\frac

p(a)=1

−p(b

)p(a

∣b)−

p(b)

​注意對於第二個式子,claris大佬認為會除0,於是還存了當前的概率上有幾個0,但其實是不需要的,如果p(b

)=

1p(b)=1

p(b)=1

,那麼。。。下面是一定會通電的,直接賦值dp=

1dp=1

dp=1就行acc

ode:

accode

:

#include

#define maxn 500005

#define double long double

using

namespace std;

int n;

int info[maxn]

,prev[maxn<<1]

,to[maxn<<1]

,cnt_e;

double cst[maxn<<1]

;inline

void

node

(int u,

int v,

double ct)

double zc[maxn]

;double dp[maxn]

;void

dfs(

int now,

int ff)

}double dp2[maxn]

,ans;

void

ser(

int now,

int ff)

ser(to[i]

,now);}

}int

main()

for(

int i=

1;i<=n;i++

)scanf

("%lf"

,&zc[i]

),zc[i]/=

100;

dfs(1,

0); dp2[1]

= dp[1]

;ser(1

,0);

printf

("%.6lf"

,ans)

;}

概率充電器(shoi2014)

出處 輾轉山河弋流歌 by 空灰冰魂 著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品 概率充電器 採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由 n 1 條導線...

SHOI2014 概率充電器

採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決 定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由n 1 條導線連通了n 個充電元件。進行充電時,每條導 線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率 決定。隨...

SHOI2014 概率充電器

這是一道概率 樹形 dp 首先我們看到這裡每乙個的貢獻都是1,所以我們要求的期望就是概率 求得其實就是這個 sum np i p i 為節點 i 通電的概率 顯然節點 i 通電有三種可能 它自己來電了 它的子樹裡有乙個點來電了傳了過來 它的子樹外面有乙個點來電了傳了過來 第一種情況最好考慮了,至於第...