zoukankan      html  css  js  c++  java
  • 【清华集训2016】如何优雅地求和

    记多项式第(i)项系数是(b_i)

    [ans = b_0 + sum_{i=1}^{m}b_i sum_{k=1}^{n} k^i inom{n}{k} x^k(1-x)^{n-k} ]

    我们考虑用第二类斯特林数展开(k^i)

    [k^i=sum_{j=1}^{i}S(i,j)j! inom{k}{j} ]

    于是

    [ egin{aligned} ans &= b_0 + sum_{i=1}^{m}b_i sum_{k=1}^{n} k^i inom{n}{k} x^k(1-x)^{n-k}\ &= b_0 + sum_{i=1}^{m}b_i sum_{k=1}^{n} sum_{j=1}^{i}S(i,j)j! inom{k}{j} inom{n}{k} x^k(1-x)^{n-k}\ &= b_0 + sum_{i=1}^{m}b_i sum_{j=1}^{i}S(i,j)j! sum_{k=j}^{n} inom{k}{j} inom{n}{k} x^k(1-x)^{n-k}\ &= b_0 + sum_{i=1}^{m}b_i sum_{j=1}^{i}S(i,j)j! sum_{k=j}^{n} inom{n}{j} inom{n-j}{k-j} x^k(1-x)^{n-k}\ &= b_0 + sum_{i=1}^{m}b_i sum_{j=1}^{i}S(i,j)j! inom{n}{j} x^j sum_{k=j}^{n} inom{n-j}{k-j} x^{k-j}(1-x)^{n-k}\ &= b_0 + sum_{i=1}^{m}b_i sum_{j=1}^{i}S(i,j)j! inom{n}{j} x^j\ end{aligned} ]

    获得一个(O(m^2))做法

    我们考虑优化,展开第二类斯特林数

    [S(i,j)=frac{1}{j!} sum_{k=1}^{j}(-1)^{j-k} inom{j}{k} k^i = frac{1}{j!} sum_{k=1}^{infty}(-1)^{j-k} inom{j}{k} k^i ]

    于是

    [ egin{aligned} ans &= b_0 + sum_{i=1}^{m}b_i sum_{j=1}^{i}S(i,j)j! inom{n}{j} x^j\ &= b_0 + sum_{j=1}^{i} j! inom{n}{j} x^j sum_{i=1}^{m}b_i S(i,j)\ &= b_0 + sum_{j=1}^{i} j! inom{n}{j} x^j sum_{i=1}^{m}b_i frac{1}{j!} sum_{k=1}^{j}(-1)^{j-k} inom{j}{k} k^i\ &= b_0 + sum_{j=1}^{i} inom{n}{j} x^j sum_{i=1}^{m}b_i sum_{k=1}^{m}(-1)^{j-k} inom{j}{k} k^i\ &= b_0 + sum_{j=1}^{i} inom{n}{j} x^j sum_{k=1}^{m}(-1)^{j-k} inom{j}{k} sum_{i=1}^{m}b_ik^i\ end{aligned} ]

    发现(sum_{i=1}^{m}b_ik^i)就是(f(k)-b_0)

    出题人非常凉心地给出了点值让我们不需要多点求值

    于是

    [ egin{aligned} ans &= b_0 + sum_{j=1}^{i} inom{n}{j} x^j sum_{k=1}^{m}(-1)^{j-k} inom{j}{k} sum_{i=1}^{m}b_ik^i\ &= b_0 + sum_{j=1}^{i} inom{n}{j} x^j sum_{k=1}^{m}(-1)^{j-k} inom{j}{k} (f(k)-b_0)\ end{aligned} ]

    后面的部分是一个卷积的形式,NTT解决

    (b_0)显然是(f(0))

    于是就做完了

    时间复杂度(O(mlogm))

    不过据说各种(O(m^2))做法乱艹过这题

  • 相关阅读:
    【Linux】【jenkins】自动化部署一 安装jenkins及Jenkins工作目录迁移
    【Linux】【docker】docker私服安装
    【Linux】【docker】docker及docker-compose安装
    【Linux】【tomcat】tomcat8.5安装
    【Linux】【jdk】jdk8.0安装
    【Linux】【mysql】mysql8.0开启远程访问及常见问题
    【Linux】记录一个yum update和upgrade的区别
    【Linux】【gitlab】gitlab安装、备份、恢复、升级、内存消耗问题
    Python序列——列表
    Python序列——元组
  • 原文地址:https://www.cnblogs.com/deaf/p/14487211.html
Copyright © 2011-2022 走看看