給一棵樹,dfs時隨機等概率選擇走子樹,求期望時間戳。
乙個非常簡單的樹形dp?期望dp。推導出來轉移式就非常簡單了。
在經過分析以後,我們發現期望時間戳其實只需要考慮自己父親下來(步數加一)&從兄弟回來兩種可能。
設size[i]為i節點子樹大小(包括自身)
對於兄弟的情況,i節點的乙個兄弟有1/2的可能已經被遍歷完畢了,也就是步數加size該兄弟。
於是設ans[i]為到達i點的期望值,則
ans[i]=ans[father i]+1.0+(size[father i]-size[i]-1)*1/2
首先我們先進行一遍dfs,求出所有節點的size,
然後再次dfs,算出ans,即可。具體詳見**。
#include #include#include
using
namespace
std;
struct
edgee[
200010
];int h[100010],size[100010],n,x,tot=0
;double ans[100010
];int insr(int u,int
v)void dfssize(int x,int
last)
}}void calcans(int x,int
last)
intmain()
dfssize(
1,0);
calcans(
1,0);
for(int i=1;i<=n;i++)printf("
%.2lf
",ans[i]);
}
CF123E Maze 期望 樹形dp
題目鏈結 題目鏈結是洛谷翻譯過的。題意 給你一棵樹,邊權都是1,每乙個點有乙個是起點的概率和乙個是終點的概率,你將以起點為根,開始在樹上隨機dfs,直到走到終點。求dfs從起點到終點的期望長度。n 10w 題解 我們考慮一條確定路徑從s到t的期望步數的計算方法。我們發現,這個答案根據期望的線性性,我...
CF23 E Tree 樹形dp 高精度
cf23 e.tree cf竟讓卡常qaq dp 高精度 dp x j 表示以x為根的子樹,x所屬的聯通塊大小為j,的最大乘積 不帶j這塊 最後f x 維護以x為根的子樹的最大答案 有點卡記憶體.高精壓了4位 看了題解,了解到,其實這個dp的複雜度其實是o n 2 每次轉移是複雜度是x之前的子樹的s...
CF19E Fairy 樹形結構,差分
給出 n 個點 m 條邊的一張無向圖,求有多少條邊去掉後可以使得圖變成一張二分圖。1 leq n,m leq 10 4 雖然線段樹分治可以暴力草過去但是考慮點智慧型的做法。眾所周知沒有奇環是圖是二分圖的充要條件,所以答案就是奇環的交。顯然無法考慮所有的奇環,但是我們可以考慮一下簡單奇環。先隨便跑出乙...