zoukankan      html  css  js  c++  java
  • CF438E The Child and Binary Tree

    Description

    有长为 (n) 的正整数数列 ({c_n}) ,且 (c_n) 互异。现需构造一棵二叉树,点权均为 ({c_n}) 中的数。给定 (m),对于每个正整数 (kleq m),求点权和为 (k) 的二叉树个数。

    Solution

    容易想到先搞个递推式,然后再化简。令 (f_i) 表示权值和为 (i) 的二叉树个数,(f_0=1),其 OGF 为 (F(x)),那么对于 (mgeq 1),有

    [egin{align} f_m&=sum_{i=1}^n sum_{j=0}^{m-a_i} f_j imes f_{m-a_i-j} \ &=sum_{i=1}^n [x^{m-a_i}] F^2(x) \ &=[x^m] F^2(x) sum_{i=1}^n x^{a_i}\ end{align} ]

    (G(x)=sum_{i=1}^n x_{a_i})(f_m=[x^m]G(x)F^2(x)),又 (f_0=1),那么

    [F(x)=1+G(x)F^2(x) ]

    解得两个根

    [F_1=frac{1+sqrt{1-4G}}{2G},F_2=frac{1-sqrt{1-4G}}{2G} ]

    又要满足初始值 (f_0=1),即 (F) 泰勒展开第零项,那么

    [lim_{x o 0} F(x)=1 ]

    发现只有 (F_2) 符合条件,那么 (F=frac{1-sqrt{1-4G}}{2G})

    但是 (G(x))(g_0 eq 1),不存在逆。于是有一个很神奇的方法,即分母无理化。

    [F=frac{1-sqrt{1-4G}}{2G}=frac{2}{1+sqrt{1-4G}} ]

    于是就可以求了。

  • 相关阅读:
    在Unity3D中开发的Hologram Shader
    在Unity3D中开发的Toon Shader
    在Unity3D中开发的Dissolve Shader
    2017.2.26
    2017.2.21
    2017.2.20
    2017.2.19
    2017.2.18
    2017.2.17<转>
    2017.2.16 linux
  • 原文地址:https://www.cnblogs.com/wwlwQWQ/p/14663710.html
Copyright © 2011-2022 走看看