BZOJ3566 SHOI2014 概率充電器

2022-04-29 01:12:07 字數 847 閱讀 7553

bzoj

luogu

很顯然的兩遍樹dp吧。

設\(f_i\)表示只考慮\(i\)的子樹,\(i\)點沒有電的概率。

\[f_i=q_i*\prod_f_v+(1-f_v)*(1-p_e)

\]為了方便表示把後面那一坨記為\(h_v\),即\(h_i=f_i+(1-f_i)*(1-p_e)\)

然後再記乙個\(g_i\)表示\(i\)的父親不向\(i\)供電的概率,那麼\(g_i=f_*g_/h_i\)。

因為\(h_i\)可能等於\(0\),所以第二次dp的時候要記一下所有兒子中\(h_v=0\)的個數,判一下即可。

最終\(ans=\sum_^1-f_i*g_i\)

#include#includeusing namespace std;

int gi()

const int n = 5e5+5;

int n,to[n<<1],nxt[n<<1],head[n],cnt;

double ww[n<<1],val[n],f[n],g[n],h[n],ans;

void link(int u,int v,int w)

void dfs1(int u,int fa)

}void dfs2(int u,int fa)

}int main()

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

dfs1(1,0);g[1]=1;dfs2(1,0);

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

printf("%.6lf\n",ans);

return 0;

}

BZOJ 3566 SHOI2014 概率充電器

題目 題意 給定樹形結構的n個元件,每個元件有一定概率自己充電,還有一定概率通過某條邊給其他元件充電,求充電的元件期望個數。n 500000 題解 樹形結構肯定能想到樹形dp,全樹對某點產生的貢獻一般可以通過一到兩遍樹形dp計算得出,本題所求期望等於每個元件被充電的概率之和。設f i 表示i被充電的...

bzoj3566 SHOI2014 概率充電器

n個充電器連成一棵樹。第i個充電器有p i 的概率直接充電。每條導線有一定機率可以導電。可以導電的導線形成的聯通塊中只要存在直接充電的結點整個聯通塊的充電器均進入充電狀態。問期望進入充電狀態的充電器個數 顯然可知我們只需要得到f i 表示i進入充電狀態的概率 那麼a ns f i 我們把無根樹變有根...

bzoj3566 SHOI2014 概率充電器

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