3、摧毀樹狀圖(graph)
題目描述:
自從上次神刀手幫助蚯蚓國增添了上千萬人口(蚯口?),蚯蚓國發展得越來越繁榮了!最近,他們在地下發現了一些神奇的紙張,經過仔細研究,居然是d國x市的超級計算機設計圖紙!這台計算機叫做『樹狀圖』,由n個計算節點與n-1條可以雙向通訊的網線連線而成,所有計算節點用不超過n的正整數編號。顧名思義,這形成了一棵樹的結構。蚯蚓國王已在圖紙上掌握了這棵樹的完整資訊,包括n的值與n-1條網線的連線資訊。於是蚯蚓國王決定,派出蚯蚓國最強大的兩個黑客,小p和小h,入侵『『樹狀圖』』,盡可能地摧毀它。小p和小h精通世界上最好的程式語言,經過一番商量後,他們決定依次採取如下的步驟:
1)整棵樹的每個計算節點有乙個故障率p,表示有p的機率會摧毀掉這個節點。顯而易見這個時候這個圖的連通塊個數會增加。國王(或者是小p/h)會派人詢問當前樹狀圖聯通塊的期望個數。
2)小p和小h水平並不是想象中那麼高,他們只能修改某個點的故障率,而且(他們甚至不知道故障率提公升越高越好)他們也想知道當前樹狀圖聯通塊的期望個數。
3)此時你不需要指揮他們入侵了,只需要計算每次修改節點故障率後,剩下的連通塊的期望個數即可。
注意:被摧毀的節點不算入連通塊的數量中。
輸入格式:
第一行乙個正整數n,表示節點數。
第二行n個實數,表示第i個點的故障率。
第3行到第3+n-2行每行兩個整數a,b,(1<=a,b<=n)表示啊a,b之間有一條邊。
接下來乙個正整數m,表示修改次數。
接下來m行,每行乙個正整數a和乙個實數c,表示將節點a的故障率修改為c。
輸出格式:
m行,表示每次修改過後連通塊的期望值。
樣例輸入1:
0.23 0.40 0.50
1 21 3
1 0.3
樣例輸入2:
0.50 0.20 0.90 0.50 0.50
2 15 3
3 14 3
5 0.50
4 0.10
2 0.40
4 0.80
1 0.30
樣例輸出1:
1.0300
樣例輸出2:
1.8500
2.2100
2.1100
1.4800
1.5400
資料規模與約定:
hch的官方題解:
我們考慮做有根樹的dp。設1為根。
我們設為v節點消失的概率,設
分別表示v節點被破壞/沒被破壞時的連通塊期望值。
解釋一下f[v][1]的轉移方程:因為如果v節點沒有被破壞,並且兒子節點sn也沒有被破壞,那麼連通塊的個數會減少,減少的數量就是sn所在的連通塊的期望,也就是
。當然我們不可能每次詢問了就dfs一遍計算,所以我們需要再研究一下遞推式。
我們先只考慮4號點對答案的貢獻。我麼按照遞推式模擬一遍。
最後答案就是
,也就是
。推廣到一般情況:v對答案的貢獻就是
,特別地,設
(0是1的父親)。
知道這個結論過後維護起來就特別方便了。我們記
。修改乙個點的概率時就相應地修改值就行了(具體見**)。
估計看不懂在說什麼
首先我們考慮如何求解不操作的情況。
考慮期望的線性性,我們統計每乙個節點對答案的負貢獻。
首先,假裝每乙個節點都是乙個連通塊。
對於節點 x ,如果他消失了,那麼連通塊個數 -1,由於他消失的概率是 p
x'>px
,他對期望的負貢獻為 p
i'>p
i 。對於無序數對 (x,
y)'>(x,y)
,如果 x 和 y 有邊連線,那麼,當且僅當他們都存在,才會對連通塊個數產生負貢獻,所以它對期望的負貢獻為 (1−
px)(
1−py
)'>(1−px)(1−py)
。完成了這個問題之後,修改操作也變得簡單了。
首先給樹定根。然後,只需要對於每乙個節點 x 維護乙個 vson[x] 代表其所有兒子的 (1−
py)'>(1−py)
之和。修改操作就變的簡單了。
時間複雜度 o(n
)'>o(n)
。code:
1 #include2 #include3over#define n 1000005
4using
namespace
std;
5struct
nodee[n];
8double
ans;
9int
first[n],nxt[n],cnt;
10void add(int u,int
v)16
double
add1[n],add2[n],sum[n],p[n];
17int
fa[n];
18void dfs(int x,int
father)
27 add2[x]=1.0*(1-p[x])*sum[x];
28 ans-=add1[x]+add2[x];29}
30int
main()
42 dfs(1,0
);43
int q;cin>>q;
44while(q--)
60return0;
61 }
HDU 3853 期望概率DP
期望概率dp簡單題 從 1,1 點走到 r,c 點,每走一步的代價為2 給出每乙個點走相鄰位置的概率,共3中方向,不動 x,y x y p x y 0 右移 x y x y 1 p x y 1 左移 x y x 1 y p x y 2 問最後走到 r,c 的期望 dp i j 為從 i j 點走到 ...
UvaLive6441(期望概率dp)
1.涉及負數時同時維護最大和最小,互相轉移。2.考場上最大最小混搭轉移wa,賽後發現如果是小的搭小的,大的搭大的就可過,類似這種 db a c i w i dp1 i 1 j 1 1 c i w i dp1 i 1 j 1 db b c i w i dp2 i 1 j 1 1 c i w i dp2...
2月總結 3月期望
2月,沒開始的結束 來學校沒幾天的2月,考研成績的公布,結果不好,心態卻還好。啥都沒做做,悠閒。不能突破自己,不想找導師聯絡調劑,感覺很麻煩,覺得找工作也很容易 這就是我的不足,卻突破不了 開始了,找工作的路。3月,忙碌的開始 開始了,工作。去了一場華科的招聘會。求職的人,人山人海,有不遠千里來的。...