4613. 【NOIP2016模拟7.12】求和

2 篇文章 0 订阅
2 篇文章 0 订阅
题目描述

在这里插入图片描述
n &lt; = 1 0 5 n&lt;=10^5 n<=105

题目分析
  • 我们惊喜地发现这竟然是一道数论题。
  • 第二类斯特林数定义 S ( n , m ) S(n,m) S(n,m)定义
  • 首先关于第二类斯特林数有一个特别重要的公式。
  • S ( i , j ) = 1 j ! ∗ ∑ k = 1 j ( − 1 ) k ∗ C j k ∗ ( j − k ) i S(i,j)=\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*C_j^k*(j-k)^i S(i,j)=j!1k=1j(1)kCjk(jk)i
  • 这是一个容斥,枚举有多少个集合是空的,但最后因为每一个集合是相同的,所以要除以 j ! j! j!
  • 然后我们把这个东西套进题目的式子里:
  • ∑ i = 0 n ∑ j = 0 i S ( i , j ) ∗ 2 j ∗ j ! \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! i=0nj=0iS(i,j)2jj!
  • = ∑ i = 0 n ∑ j = 0 n S ( i , j ) ∗ 2 j ∗ j ! =\sum_{i=0}^n\sum_{j=0}^nS(i,j)*2^j*j! =i=0nj=0nS(i,j)2jj!
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ i = 0 n S ( i , j ) =\sum_{j=0}^n2^j*j!*\sum_{i=0}^nS(i,j) =j=0n2jj!i=0nS(i,j)
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ i = 0 n 1 j ! ∗ ∑ k = 1 j ( − 1 ) k ∗ C j k ∗ ( j − k ) i =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*C_j^k*(j-k)^i =j=0n2jj!i=0nj!1k=1j(1)kCjk(jk)i
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ i = 0 n 1 j ! ∗ ∑ k = 1 j ( − 1 ) k ∗ j ! k ! ( j − k ) ! ∗ ( j − k ) i =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\frac{1}{j!}*\sum_{k=1}^{j}(-1)^k*\frac{j!}{k!(j-k)!}*(j-k)^i =j=0n2jj!i=0nj!1k=1j(1)kk!(jk)!j!(jk)i
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ i = 0 n ∑ k = 1 j ( − 1 ) k ∗ ( j − k ) i k ! ( j − k ) ! =\sum_{j=0}^n2^j*j!*\sum_{i=0}^n\sum_{k=1}^{j}(-1)^k*\frac{(j-k)^i}{k!(j-k)!} =j=0n2jj!i=0nk=1j(1)kk!(jk)!(jk)i
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ k = 1 j ∑ i = 0 n ( − 1 ) k ∗ ( j − k ) i k ! ( j − k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\sum_{i=0}^n(-1)^k*\frac{(j-k)^i}{k!(j-k)!} =j=0n2jj!k=1ji=0n(1)kk!(jk)!(jk)i
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ k = 1 j ( − 1 ) k k ! ∑ i = 0 n ( j − k ) i ( j − k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\frac{(-1)^k}{k!}\sum_{i=0}^n\frac{(j-k)^i}{(j-k)!} =j=0n2jj!k=1jk!(1)ki=0n(jk)!(jk)i
  • 用等比数列求和,可得:
  • = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ k = 1 j ( − 1 ) k k ! ∗ ( j − k ) n + 1 − 1 ( j − k − 1 ) ( j − k ) ! =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}\frac{(-1)^k}{k!}*\frac{(j-k)^{n+1}-1}{(j-k-1)(j-k)!} =j=0n2jj!k=1jk!(1)k(jk1)(jk)!(jk)n+11
  • 经过了一系列转折,我们终于接近终点,我们设:
  • f ( i ) = ( − 1 ) i i ! f(i)=\frac{(-1)^i}{i!} f(i)=i!(1)i g ( i ) = i n + 1 − 1 ( i − 1 ) ∗ i ! g(i)=\frac{i^{n+1}-1}{(i-1)*i!} g(i)=(i1)i!in+11
  • 所以原式 = ∑ j = 0 n 2 j ∗ j ! ∗ ∑ k = 1 j f ( k ) ∗ g ( j − k ) =\sum_{j=0}^n2^j*j!*\sum_{k=1}^{j}f(k)*g(j-k) =j=0n2jj!k=1jf(k)g(jk)
  • 我们发现这是一个标准的卷积,所以用NTT求即可。
  • 时间复杂度 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n)
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值