zoukankan      html  css  js  c++  java
  • CF438E

    题目叙述

    给定一个数组 (c) 和一个数 (s) ,求满足以下条件的二叉树数量:

    • 每个节点有个权值,权值为 (c) 中的一个数
    • 所有节点权值和为 (s)

    题解

    首先设 (f_i) 表示 (i) 个结点组成的这样的树有 (f_i) 个,(g_i) 表示数 (i) 是否在。那么 (f_i=sum_{j=0}^i g_jsum_{k=0}^{i-j}f_kcdot f_{i-j-k}) 。其实也就是 (f_i=sum_{i+j+k=i}g_icdot f_{j}cdot f_k) 。如果 (F)(f) 的生成函数,(G)(g) 的生成函数,那么有 (F^2cdot G+1=F) 。注意,这里 (+1) 是因为边界。具体来说,(F^2cdot G) 的零次项很明显是 0. 但是 (f_0 = 1) 。所以这非常不正确。所以要 (+1)

    那么剩下的任务就是解方程了。(F^2cdot G+1=F),这是个二次方程,但是由于 (G) 是一个不可求逆的东西,所以并不能直接套用求根公式。考虑这样做:

    [egin{aligned}&F^2cdot G-F+1=0\Rightarrow &(Fcdot G)^2-(Fcdot G)+G=0\Rightarrow &Fcdot G=frac{1pm sqrt{1-4G}}{2}end{aligned} ]

    很明显,左式没有常数项。若右式取正,那么右式必然有常数项。所以右式取负。

    也就是:

    [egin{aligned}&Fcdot G=frac{1-sqrt{1-4G}}{2}\Rightarrow &Fcdot G=frac{2G}{1+sqrt{1-4G}}\Rightarrow &Gcdot (F-frac{2}{1+sqrt{1-4G}})=0\Rightarrow &F=frac{2}{1+sqrt{1-4G}}end{aligned} ]

    所以直接做即可。

  • 相关阅读:
    EasyUI--messager
    EasyUI--初学
    框架错误汇总
    OGNL调用静态方法和属性
    查询内容在网页里面分页显示+跳页查看
    struts2——通配符
    JavaScript 输出
    JavaScript语法(一)
    Struts+Hibernate+jsp页面 实现分页
    elasticsearch-5.x JAVA API(001)
  • 原文地址:https://www.cnblogs.com/skiceanAKacniu/p/13284812.html
Copyright © 2011-2022 走看看