記憶體限制:256 mib 時間限制:2000 ms 標準輸入輸出
題目描述
著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品——概率充電器:
「採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看吧!」
shoi 概率充電器由 n-1 條導線連通了 n 個充電元件。進行充電時,每條導線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率決定。
隨後電能可以從直接充電的元件經過通電的導線使得其他充電元件進行間接充電。
作為 shoi 公司的忠實客戶,你無法抑制自己購買 shoi 產品的衝動。在排了乙個星期的長隊之後終於入手了最新型號的 shoi 概率充電器。
你迫不及待地將 shoi 概率充電器插入電源——這時你突然想知道,進入充電狀態的元件個數的期望是多少呢?
輸入格式
第一行乙個整數:n。概率充電器的充電元件個數。充電元件由 1-n 編號。
之後的 n-1 行每行三個整數 a, b, p,描述了一根導線連線了編號為 a 和 b 的充電元件,通電概率為 p。
第 n+2 行 n 個整數:qiq_iqi。表示 i 號元件直接充電的概率為 qi。
輸出格式
輸出一行乙個實數,為進入充電狀態的元件個數的期望,四捨五入到六位小數
樣例樣例輸入
3
1 2 50
1 3 50
50 0 0
樣例輸出
1.000000
資料範圍與提示
對於 100%的資料,n≤500000,0≤p,qi≤100。
見到期望首先想dp。
直接想聯通的概率比較難碼,故思考f表示不聯通的概率,最終用1-f就表示聯通的概率。
f[x]=不連通的概率,p[x]表示這個點直接聯通概。
我們為了避免後效性高斯消元(高斯消元消不起)必須選擇其他方法。
思考:我們先求出來父親對兒子貢獻,再求出兒子對父親貢獻就好了(其實就是常規樹形dp)。
我們先考慮兒子對父親的貢獻。
父親可以由每乙個兒子轉移過來,
父親不連通的概率等於自己本身不連的概率乘以所有自己兒子不相連的概率
首先兒子需要聯通才可以由兒子聯通轉移過來
,用1-f[x]表示自己兒子聯通的概率
(1-f)*w表示當兒子聯通的時候由兒子轉移過來的概率
1-...等於不連通的概率
再讓他們都相乘
於是得到
$f[x]=(1-p[x])*π1-(1-f[son])*聯通概率$
然後計算兒子的概率由父親貢獻
考慮f[v]表示除了v以外貢獻
首先f[v]=1-當所有父親被聯通概率-其聯通時的概率*這個邊聯通的概率
得到
$f[v]=(1-\frac*聯通概率)*聯通概率$
思考父親被別的點轉移過來的概率(除去v點)
$1-}$
1-f
表示自己兒子被轉移過來的概率
(1-f)*w表示父親與這個點相連的概率
1-..表示包含v在內的不相連的概率
再用 f[x]/...不連通的概率
至於為什麼除呢 ?
例如得不病 1/5 ,不得乙病3/5 ,不甲病1/3。那麼1/5*5/3=1/3=不甲病 ,1-表示聯通的概率
以下依然是本人醜陋**
/*view code31 2 25
1 3 25
50 10 20
1.057500
先搜下再搜上 從底往上傳
先搜下再搜上 從底往上傳
先搜下再搜上 從底往上傳
*/#include
#define ll int
#define db double
#define e 1e-9
#define inf 0x7fffffff
#define a 1000100
using
namespace
std;
ll n,m,head[a],ver[a],next[a],tot=0
,xx,yy;
db gai[a],zz,gl[a],f[a];
bool
flag[a];
void
add(ll x,ll y,db gailv)
inline ll r()
db dfs1(ll x,ll fa)
}void
dfs2(ll x,ll fa)
}int
main()
for(ll i=1;i<=n;i++)
memset(flag,
0,sizeof(flag));dfs1(1
,inf);
memset(flag,
0,sizeof(flag));dfs2(1
,inf);
db ans=0
;
for(ll i=1;i<=n;i++)
printf(
"%.6lf\n
",ans);
}
通過寫這個題解,我深查自己語言表達能力欠缺。
概率充電器(shoi2014)
出處 輾轉山河弋流歌 by 空灰冰魂 著名的電子產品品牌 shoi 剛剛發布了引領世界潮流的下一代電子產品 概率充電器 採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由 n 1 條導線...
SHOI2014 概率充電器
採用全新奈米級加工技術,實現元件與導線能否通電完全由真隨機數決 定!shoi 概率充電器,您生活不可或缺的必需品!能充上電嗎?現在就試試看 吧!shoi 概率充電器由n 1 條導線連通了n 個充電元件。進行充電時,每條導 線是否可以導電以概率決定,每乙個充電元件自身是否直接進行充電也由概率 決定。隨...
SHOI2014 概率充電器
這是一道概率 樹形 dp 首先我們看到這裡每乙個的貢獻都是1,所以我們要求的期望就是概率 求得其實就是這個 sum np i p i 為節點 i 通電的概率 顯然節點 i 通電有三種可能 它自己來電了 它的子樹裡有乙個點來電了傳了過來 它的子樹外面有乙個點來電了傳了過來 第一種情況最好考慮了,至於第...