【清华集训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))做法乱艹过这题

原文地址:https://www.cnblogs.com/deaf/p/14487211.html