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} ]

    所以直接做即可。

  • 相关阅读:
    5.线性回归算法
    作业14 15 手写数字识别-小数据集
    作业13 14 深度学习-卷积
    作业12 13-垃圾邮件分类2
    作业11 12.朴素贝叶斯-垃圾邮件分类
    作业10:11.分类与监督学习,朴素贝叶斯分类算法
    作业9、主成分分析
    作业8、特征选择
    作业7.逻辑回归实践
    作业6.逻辑归回
  • 原文地址:https://www.cnblogs.com/skiceanAKacniu/p/13284812.html
Copyright © 2011-2022 走看看