概率充電器(shoi2014)

2021-09-25 19:25:17 字數 1880 閱讀 2150

出處[輾轉山河弋流歌 by 空灰冰魂]

著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品——概率充電器:「採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定! shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!」shoi 概率充電器由 n-1 條導線連通了 n 個充電元件。進行充電時,每條導線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率 決定。隨後電能可以從直接充電的元件經過通電的導線使得其他充電元件進行間接充電。作為 shoi 公司的忠實客戶,你無法抑制自己購買 shoi 產品的衝動。在排了乙個星期的長隊之後終於入手了最新型號的 shoi 概率充電器。你迫不及待 地將 shoi 概率充電器插入電源——這時你突然想知道,進入充電狀態的元件個數的期望是多少呢?輸入第一行乙個整數: n

nn。概率充電器的充電元件個數。充電元件由 1−n

1-n1−

n 編號。之後的 n-1 行每行三個整數a,b

,p

a, b, p

a,b,

p,描述了一根導線連線了編號為 a

aa 和 b

bb 的充電元件,通電概率為 p%。第 n+2

n+2n+

2 行 n

nn 個整數:qiqi

qi。表示 i 號元件直接充電的概率為 qi%。輸出輸出一行乙個實數,為能進入充電狀態的元件個數的期望,四捨五入到小數點後 6 位小數。

樣例輸入1

3

1 2 50

1 3 50

50 0 0

樣例輸出1
1.000000
樣例輸入1
5 

1 2 90

1 3 80

1 4 70

1 5 60

100 10 20 30 40

樣例輸出2
4.300000
提示

【資料規模】對於 30%的資料, n≤5000。對於 100%的資料, n≤500000, 0≤p,qi≤100。

code

#include

using

namespace std;

const

int n=

5e5+5;

struct fjye[n<<1]

;int cnt,fir[n]

,fa[n]

;double p[n]

,h[n]

,g[n]

,ans=

0.0;

//p[i]表示以i為根的子樹中通電節點的期望值,g[i]表示i的父節點對i的通電節點個數期望的貢獻,h[i]表示以i為根結點的子樹對i的父節點通電節點個數期望的貢獻

void

add(

int u,

int v,

double w)

int ui,vi,wi,c,n;

void

dfs1

(int u,

int f)

}void

dfs(

int u,

int f)

}int

main()

for(

int i=

1;i<=n;i++

)dfs1(1

,0); g[1]

=1.0

;dfs(1

,0);

//for(int i=1;i<=n;i++) ans+=1-p[i]*g[i];

printf

("%.6lf"

,ans)

;exit(0

);//開手工棧無法用return退出

return0;

}

SHOI2014 概率充電器

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

SHOI2014 概率充電器

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

SHOI2014 概率充電器

著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品 概率充電器 採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定 shoi 概率充電器,您生活不可或缺的必需品 能充上電嗎?現在就試試看吧 shoi 概率充電器由 n 1 條導線連通了 n 個充電元件。進行充電時,每條...