著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品——概率充電器:
「採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看吧!
」shoi 概率充電器由 n-1 條導線連通了 n 個充電元件。進行充電時,每條導線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率決定。
隨後電能可以從直接充電的元件經過通電的導線使得其他充電元件進行間接充電。
作為 shoi 公司的忠實客戶,你無法抑制自己購買 shoi 產品的衝動。在排了乙個星期的長隊之後終於入手了最新型號的 shoi 概率充電器。
你迫不及待地將 shoi 概率充電器插入電源——這時你突然想知道,進入充電狀態的元件個數的期望是多少呢?
第一行乙個整數:n。概率充電器的充電元件個數。充電元件由 1-n 編號。
之後的 n-1 行每行三個整數 a, b, p,描述了一根導線連線了編號為 a 和 b 的
充電元件,通電概率為 p%。
第 n+2 行 n 個整數:qi。表示 i 號元件直接充電的概率為 qi%。
輸出一行乙個實數,為進入充電狀態的元件個數的期望,四捨五入到六位小數
3 1 2 50
1 3 50
50 0 0
1.000000
對於 100%的資料,n≤500000,0≤p,qi≤100。
做乙個轉化,轉化為求不能進入充電狀態的概率,最後用1減去即可
那麼設 \(f[x]\) 表示x不能被進入充電狀態的概率,先考慮子樹內部:
\(f[x]=(1-q[i])*\prod\)
上面的轉移方程意思為分兩種情況:
1.子節點內部沒有進入充電狀態 \(f[u]\)
2.子節點內部已經進入充電狀態,但是邊斷掉了 \((1-f[u])*(1-p[i])\)
最後從根下放再做一遍即可
**於巨佬pi son
喻隊太巨了
1 #include2 #include3 #include4 #include5using
namespace
std;
6struct
node
7edge[1000001
];11
int num,head[500001
];12
double f[500001],ans,c[500001
];13
void add(int u,int v,double
d)14
21void dfs1(int x,int
fa)22 31}
32void dfs2(int x,int
fa)33 44}
45int
main()
46 55
for (i=1;i<=n;i++)
56 scanf("
%lf",&c[i]),c[i]/=100.0
;57 dfs1(1,1
);58 dfs2(1,1
);59
for (i=1;i<=n;i++)
60 ans+=1.0-f[i];
61 printf("
%.6lf\n
",ans);
62 }
概率充電器(shoi2014)
出處 輾轉山河弋流歌 by 空灰冰魂 著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品 概率充電器 採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由 n 1 條導線...
SHOI2014 概率充電器
採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決 定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由n 1 條導線連通了n 個充電元件。進行充電時,每條導 線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率 決定。隨...
SHOI2014 概率充電器
這是一道概率 樹形 dp 首先我們看到這裡每乙個的貢獻都是1,所以我們要求的期望就是概率 求得其實就是這個 sum np i p i 為節點 i 通電的概率 顯然節點 i 通電有三種可能 它自己來電了 它的子樹裡有乙個點來電了傳了過來 它的子樹外面有乙個點來電了傳了過來 第一種情況最好考慮了,至於第...