著名的電子產品品牌 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%。
輸出一行乙個實數,為進入充電狀態的元件個數的期望,四捨五入到六位小數
31 2 50
1 3 50
50 0 0
1.000000
對於 100%的資料,n≤500000,0≤p,qi≤100。
樹形概率期望dp
充上電的概率不好統計,但是充不上電的概率還是比較容易統計的。用\(f[x]\)表示\(x\)節點充不上電的概率,那麼\(now\)節點能充上電的期望就是\(1-f[now]\),定義\(ff[x,y]\)表示邊\(x,y\)不通的概率,
對於每乙個節點\(now\)能夠從子樹及自己都無法充上電的轉移是
\[f[now]=(1-p_)*\prod f[i]+(1-f[i])*ff[now,i]
\]由父節點的轉移其實本質上是一樣的,但是父節點的概率還包含一部分\(now\)本身的概率,所以要除去,由上乙個方程解出就是\(f[fa]/(f[now]+(1-f[now])*ff[now])\)
表示的是\(now\)的父親\(fa\)因為初了\(now\)的其他原因充不上電的原因,用\(d\)來代替的話轉移式就變成\(f[now]*=d+(1-d)*ff[now]\),和第乙個轉移式是一樣的
#include#include#include#define m 1000021
using namespace std;
int i,m,n,j,k,a[m],ver[m],edge[m],head[m],nex[m],cnt,x,y,z;
double f[m],v[m],ans,ff[m];\
inline int gtt()
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+c-48,c=getchar();
return x*r;
}void add(int x,int y,int z)
void dfs1(int now,int fa)
}void dfs2(int now,int fa)
ans+=1-(f[now]);
}int main()
for(i=1;i<=n;++i) a[i]=gtt();
dfs1(1,0);
dfs2(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 通電有三種可能 它自己來電了 它的子樹裡有乙個點來電了傳了過來 它的子樹外面有乙個點來電了傳了過來 第一種情況最好考慮了,至於第...