題解 SHOI2012 隨機樹

2022-05-01 19:21:10 字數 955 閱讀 1360

題目傳送門

不難看出,答案就是:

\[1+\sum_^ 2/(i+1)

\]這個問真的很仙。

可(bu)以(neng) 想到,我們可以設 \(f_\) 表示有 \(i\) 個葉子時深度 \(\ge j\) 的概率,可以得到轉移式:

\[f_=\frac\sum_^ (f_+f_-f_\times f_)

\]可以直接除以 \(i-1\) 是因為可以證明把兩顆子樹合併,只要總大小相同,那麼方案就相同。這裡就不贅述了。

然後我們就可以得到答案就是:

\[\sum_^ (f_-f_)\times i

\]

#include using namespace std;

#define int register int

#define maxn 105

template inline void read (t &t)while (c >= '0' && c <= '9') t *= f;}

template inline void read (t &t,args&... args)

template inline void write (t x)if (x > 9) write (x / 10);putchar (x % 10 + '0');}

double f[maxn][maxn];

signed main()

else

double d = 0;

for (int i = 1;i < up;++ i) d += (f[up][i] - f[up][i + 1]) * i;

printf ("%.6f\n",d);

} return 0;

}

SHOI2012 隨機樹 期望dp

初始 1 個節點,每次選定乙個葉子節點並加入兩個兒子直到葉子總數為 n 問葉子節點深度和的平均值的期望以及最大葉子深度的期望。n leq 100 p frac frac frac 2p 也就有 f i f frac g sum p sum x sum y max x,y 1 j g g includ...

SHOI2012 火柴遊戲

鏈結 首先發現移動火柴操作可以放到最後做。每一次移動火柴一定可以看做是新增一根火柴再刪除一根火柴,並且可以將任意一次新增和一次刪除操作合併為一次移動操作,那麼可以考慮只使用新增和刪除操作,最後再計算出當前情況下使用幾次移動操作最優。然而發現並不清楚優先選擇新增還是刪除,但是我們知道當新增操作次數相同...

SHOI2012 回家的路

shoi2012 d2t1 2046 年 oi 城的城市軌道交通建設終於全部竣工,由於前期規劃周密,建成後的軌道交通網路由2n2n條地鐵線路構成,組成了乙個nn縱nn橫的交通網。如下圖所示,這2n2n條線路每條線路都包含nn個車站,而每個車站都在一組縱橫線路的交匯處。出於建設成本的考慮,並非每個車站...