P3978 [TJOI2015]概率论(生成函数)
P3978 [TJOI2015]概率論
設fif_ifi?表示節點數為iii的二叉樹有多少,gig_igi?表示節點數為iii的二叉樹有多少葉子節點。
fn=∑i=0n?1fifn?1?if_n = \sum\limits_{i = 0} ^{n - 1}f_if_{n - 1 - i}fn?=i=0∑n?1?fi?fn?1?i?,f0=1f_0 = 1f0?=1。
對于ggg我們枚舉根節點的左兒子或者右兒子,有gn=2∑i=0n?1fign?1?ig_n = 2\sum\limits_{i = 0} ^{n - 1}f_ig_{n - 1 - i}gn?=2i=0∑n?1?fi?gn?1?i?,g0=0,g1=1g_0 = 0, g_1 = 1g0?=0,g1?=1。
設fff的生成函數為F(x)F(x)F(x),ggg的生成函數為G(x)G(x)G(x)。F(x)=xF(x)F(x)+1F(x) = xF(x)F(x) + 1F(x)=xF(x)F(x)+1,G(x)=2xF(x)G(x)+xG(x) = 2xF(x)G(x) + xG(x)=2xF(x)G(x)+x。
解得F(x)=21+1?4xF(x) = \frac{2}{1 + \sqrt{1 - 4x}}F(x)=1+1?4x?2?,G(x)=x1?4xG(x) = \frac{x}{\sqrt{1 - 4x}}G(x)=1?4x?x?。
(xF(x))′=11?4s=G(x)x(xF(x))' = \frac{1}{\sqrt{1 - 4s}} = \frac{G(x)}{x}(xF(x))′=1?4s?1?=xG(x)?。
兩者系數比對一下可以得到nfn?1=gnnf_{n - 1} = g_nnfn?1?=gn?,gnfn=nfn?1fn=(n+1)n2(2n?1)\frac{g_n}{f_n} = \frac{nf_{n - 1}}{f_n} = \frac{(n + 1)n}{2(2n - 1)}fn?gn??=fn?nfn?1??=2(2n?1)(n+1)n?。
#include <bits/stdc++.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);double n;scanf("%lf", &n);printf("%.10f", (n + 1) * n / (2 * (2 * n - 1)));return 0; }總結
以上是生活随笔為你收集整理的P3978 [TJOI2015]概率论(生成函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蜜橘的功效与作用、禁忌和食用方法
- 下一篇: 菊花鱼的功效与作用、禁忌和食用方法