zoukankan      html  css  js  c++  java
  • [国家集训队]整数的lqp拆分

    我们的目标是求$sumprod_{i=1}^m F_{a_i}$

    设$f(i) = sumprod_{j=1}^i F_{a_j}$
    那么$f(i - 1) = sumprod_{j=1}^{i - 1} F_{a_j}$
    又有递推式$f(i) = sum_{j = 1}^{i - 1}f(j) * F_{a_i - j}$

    那么推吧
    $$f(i) - f(i - 1)$$
    $$=sum_{j = 1}^{i - 1}f(j) * F_{a_i - j} - sum_{j = 1}^{i - 2}f(j) * F_{a_i -1- j}$$
    $$=f(i - 1) * F_{a_1} + sumprod_{i=1}^{i - 2} f(j) * (F_{a_i - j} - F_{a_i - 1 - j})$$
    $$= f(i - 1) + sumprod_{i=1}^{i - 2} f(j) * F_{a_i - 2 - j}$$
    $$= f(i - 1) + f(i - 2)$$


    所以$$f(i) = 2 * f(i - 1) + f(i - 2)$$

    法二:(我觉得巨妙)
    设 g[i] 为i的lqp拆分的权值和,则 $g[i] = ∑f[j] * g[i-j] + f[i]$, 其中 $g[0] = 0, g[1] = 1$
    设 $A = ∑f[i] * x^i , B = ∑g[i] * x^i$ ,那么 => $B = A*B + A$
    解一下 B ,发现 $B = A/(1-A)$
    又∵ A的闭形式是 $x/(1 - x - x^2)$ [斐波那契数的生成函数闭形式]
    ∴ $B = x/(1 - 2x - x^2)$ ,于是直接由B的特征根 得出g[]的递推式 => $g[i] = 2*g[i-1] + g[i-2]$.
    转自金爷爷哈哈的题解

  • 相关阅读:
    C#对象初始化器
    C#构造方法
    C#方法重载
    C#方法
    C#类 对象 字段和属性
    C#数组
    C#字符串
    C#原码反码补码
    字段、方法、属性
    单例模式、异常
  • 原文地址:https://www.cnblogs.com/hjmmm/p/10433108.html
Copyright © 2011-2022 走看看