11.2 和 11.3
11.2
考慮1個隨機過程,第1次走到u號點的時間可以分成兩部分,第1部分是從1號點隨機遊走第1次走到u的父親p的時間,第2部分是從p開始走,第1次走到u的時間,由期望的線性性,第1次走到u的時間期望等於這兩部分期望的和。第1部分是乙個子問題,我們考慮怎麼解決第2部分,我們把這個問題變成1棵樹(並且根節點腦袋上也有1條邊),從根節點開始隨機遊走,走出這棵樹期望的時間,我們x[u]表示這個期望,我們對u的子樹中的點也類似地定義x[v],這樣我們可以列出關係式:
其中d是的u度數(包括那根天線),這個關係是中的第乙個1表示直接向上.,後面那個擴號中的三部分,那個1表示從u走向v, x[v]表示從v回來期望時間, x[u]表示這個時候繼續走,走出去還需要花的時間。因為是等概率,所以直接乘以1/d這個概率即可。化簡後是:
即x[u]等於這棵子樹的所有節點度的和,考慮到除了那根天線之外,所有的邊對度的貢獻為2,所以:
這樣,子問題就有了乙個簡單的答案了。我們回到原問題,dp[u]表示第一次走到u的期望時間,p表示u的父親,有:
完美解決了這個問題,複雜度o(n),其實答案都是整數,那三位小數也是來騙你的^_^。
#include
#include
#include
#include
#include
#define ll long long
#define n 1000010
using namespace std;
int n, idc=0, idx=0;
int head[n], siz[n], fa[n], seq[n];
ll ans[n];
struct edgeed[n];
void adde(int u, int v)
void dfs(int u)
}void dfs2(int u, int fa)
}int main()
dfs( 1 );
ans[1]=1;
dfs2(1,1);
for(int i=1; i<=n; i++)
printf("%lld.000\n", ans[i]);
return
0;}
11.3
從u走到v一定是從u到fa[u], 在到fa[fa[u]], …, 再從u,v的lca一步一步走到v. 那麼如果能夠算出從u到fa[u]的期望步數(設為f[u])和從fa[u]到u的期望步數(設為g[u])就能夠做了.
式子就是在列舉第一步怎麼走來列方程. 化簡發現f[u]和g[u]其實是整數. 先求f,再求g,
然後求lca就可以了.
#include
#include
#include
#include
#define ll long long
#define n 200010
#define mod 1000000007
#define p 17
using
namespace
std;
int n, q, idc=0, idx=0;
int head[n], siz[n], fa[n], dep[n];
int pw[p+1], acc[n][p+1];
ll ans[n], sum[n];
inline
int read()
while(ch >= '0' && ch <= '9')
return x * f;
}ll up(ll x)
struct edgeed[n<<1];
inline
void adde(int u, int v)
inline
void dfs(int u, int f)
}inline
void dfs2(int u, int f)
}inline
int lca(int x, int y)
int main()
dfs( 1, 1 ); dfs2( 1, 1 );
/*for(register int i=1; i<=n; i++) printf("%d\n", ans[i]);
for(register int i=1; i<=n; i++) printf("%d\n", sum[i]);*/
while ( q-- )
}
樹上期望距離
設 我們分為兩個部分 兒子到父親與父親到兒子。我們先設 f i 為 i 到 fa i 的期望移動步數。顯然,分為兩種情況 對於這種情況,只需要走一步即可到達父親節點,而這種概率為 frac 長度則為 1 那麼貢獻期望長度為 frac 對於這種情況,貢獻期望長度當然為 走到兒子的步數 兒子走到 i 的...
期望及期望dp
簡單說就是概率 概率的價值 osu x 1 3 x3 3x2 3x 1 可以看出每多出乙個1,答案就會增加3x2 3x 1 於是可以維護x和x2的期望 x1 i x1 i 1 1 p i x2 i x2 i 1 2 x1 i 1 1 p i ans i ans i 1 3 x2 i 1 3 x1 i...
期望dp小結
前言 期望dp狀態的定義是較為顯然的,但對於狀態的轉移往往需要一些公式的推導。關鍵的幾點是狀態之間的互通性,和狀態轉移的花費,以及轉移的概率 解決期望dp的幾個技巧如下 e x y e x e y 我們所求的期望可以化為多個步驟的期望累和 相關題目 j,l 在目標確定的情況下,可以得知在目標到達目標...