zoukankan      html  css  js  c++  java
  • CF923E

    先考虑如何用一个 dp 来计数

    (dp_{0,j}=p_j)

    [dp_{i,j}=sum_{k=j}^{n}frac{dp_{i-1,k}}{k+1} ]

    构建答案的生成函数为:

    [F_i(x)=sum f_jx^j ]

    [F_i(x)=sum x^jsum_{k=j}^n frac{f_{i-1,k}}{k+1} ]

    [F_i(x)=sum frac{f_{i-1,k}}{k+1}sum_{j=0}^k x^j ]

    [F_i(x)=sum frac{f_{i-1,k}}{k+1}cdot frac{x^{k+1}-1}{x-1} ]

    [F_i(x)=sum frac{f_{i-1,k}}{x-1}cdot frac{x^{k+1}-1}{k+1} ]

    后者实际上是:

    [frac{x^{k+1}-1}{k+1}=int_1^{x} Delta t^k ]

    [F_i(x)=sum frac{f_{i-1,k}}{x-1}int_1^x Delta t^k ]

    [F_i(x)=frac{1}{x-1}sum igg(f_{i-1,k}int_1^x Delta t^kigg) ]

    [F_i(x)=frac{1}{x-1}int_1^xDelta F_{i-1}(t) ]

    (G_i(x)=F_i(x+1)),则有:

    [G_i(x)=frac{1}{x}int_1^{x+1}Delta F_{i-1}(t) ]

    [G_i(x)=frac{1}{x}int_{0}^{x}Delta F_{i-1}(t+1) ]

    [G_i(x)=frac{1}{x}int_0^{x}Delta G_{i-1}(t) ]

    [G_i(x)=frac{1}{x}int G_{i-1}(x) ]

    [G_i(x)=sum_{k=0}^{infty}frac{g_{i-1,k}}{k+1}x^k ]

    于是 (g_{m,k}=g_{0,k} imes frac{1}{(k+1)^m})

    考虑如何得到 (g_0),注意到:

    [G_0(x)=F_0(x+1)=sum_{i=0}^{n}p_i(x+1)^i ]

    [G_0(x)=sum_{i=0}^n p_isum_{j=0}^i x^jinom{i}{j} ]

    [G_0(x)=sum_{j=0}^n x^jsum_{i=j}^n frac{i!}{j!(i-j)!} ]

    翻转序列后下面是一个卷积。

    另一边,我们有 (F_m(x)=G_m(x-1))

    所以:

    [F_m(x)=sum_{i=0}^n g_i(x-1)^i ]

    [F_m(x)=sum_{i=0}^n g_isum_{j=0}^i x^jinom{i}{j}(-1)^{i-j} ]

    [F_m(x)=sum_{j=0}^n x^jsum_{i=j}^n frac{i!}{j!(i-j)!(-1)^{i-j}} ]

    翻转序列后也是一个卷积。

    复杂度为 (mathcal O(nlog n))

  • 相关阅读:
    Redis集群搭建-韩国庆
    韩国庆讲师 个人简介
    iOS XML解析使用-韩国庆
    iOS移动开发CoreDate讲解
    多线程讲解韩老师
    MJRefresh在Xode6中报错处理
    调用第三方提供的webService服务(4)
    使用JDK开发WebService(3)
    WebService相关概念介绍(2)
    WebService的相关概念(1)
  • 原文地址:https://www.cnblogs.com/Soulist/p/13658870.html
Copyright © 2011-2022 走看看