zoukankan      html  css  js  c++  java
  • calc加强版

    XXX.calc加强版

    没错,这题还有个加强版,要从多项式角度考虑了。

    首先,很容易就能想到,单个数\(a\)的生成函数即为\(1+ax\),而我们要求的就是\(\prod\limits_{i=1}^{m}(1+ix)\)这个多项式的前\(n\)项的系数。

    我们在之前XV.付公主的背包中也碰见过类似的形式。于是我们可以直接套上一个\(\ln\)就能把它转成和的形式。

    于是现在就有

    \[\exp\Big(\sum\limits_{i=1}^m\ln(1+ix)\Big) \]

    考虑\(\ln(1+ix)\)的泰勒展开,会发现它就等于\(\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}i^j}{j}x^j\)

    于是,\(\sum\limits_{i=1}^m\ln(1+ix)=\sum\limits_{i=1}^m\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}i^j}{j}x^j=\sum\limits_{j=1}^{\infty}\dfrac{(-1)^{j+1}\sum\limits_{i=1}^mi^j}{j}x^j\)

    假如我们知道\(\sum\limits_{i=1}^mi^j\),就可以直接\(O(n)\)地计算上式了;于是现在关键就在于计算此式。

    我们考虑上式的EGF:\(\sum\limits_{i=0}^{\infty}\dfrac{\Big(\sum\limits_{j=1}^mj^i\Big)x^i}{i!}\)

    交换枚举顺序,得到

    \[\sum\limits_{j=1}^m\sum\limits_{i=0}^{\infty}\dfrac{(jx)^i}{i!} \]

    将它重新转回EGF形式,得到

    \[\sum\limits_{j=1}^me^{jx} \]

    然后套上等比数列求和公式,最终就得到

    \[\dfrac{e^{(m+1)x}-1}{e^x-1} \]

    重新转回函数形式,得到

    \[\dfrac{\sum\limits_{i=1}^{\infty}\dfrac{(m+1)^ix^i}{i!}}{\sum\limits_{i=1}^{\infty}\dfrac{1}{i!}x^i} \]

    因为分子分母都没有常数项,故我们直接把常数项约掉,就得到

    \[\dfrac{\sum\limits_{i=0}^{\infty}\dfrac{(m+1)^{i+1}x^i}{(i+1)!}}{\sum\limits_{i=0}^{\infty}\dfrac{1}{(i+1)!}x^i} \]

    分母上多项式求逆一下,再和分子卷一起就得到了\(\sum\limits_{i=1}^mi^j\)的EGF;再乘上一个阶乘,最终就得到了原序列。

    通过\(\sum\limits_{i=1}^mi^j\),我们就能求出\(\sum\limits_{i=1}^m\ln(1+ix)\),然后套上一个\(\exp\)就是原序列。

    时间复杂度\(O(n\log n)\)。常数极大,卡了好久才卡过。

    AC记录(因为不确定性极强,不保证再次提交仍可通过)

  • 相关阅读:
    6-rocketmq-springboot整合
    5-rocketmq-事务消息
    3-rocketmq-支持的消息种类
    2-rocketmq-消息发送和接收
    1-rocketmq简介-部署
    详解unix5种IO模型
    大纲
    马哥博客作业第二十一周
    马哥博客作业第二十周
    马哥博客作业第十九周
  • 原文地址:https://www.cnblogs.com/Troverld/p/14608099.html
Copyright © 2011-2022 走看看