[集训队作业2018] 复读机(生成函数,单位根反演)

传送门

subtask 1: d = 1 d=1 d=1

答案为 k n k^n kn


subtask 2: n ≤ 1000 , k ≤ 100 n\leq1000,k\leq 100 n1000,k100

f [ i ] [ j ] f[i][j] f[i][j]表示由 i i i个复读机来分 j j j个时间点的方案数。
可以得到递推式:
f [ i ] [ j ] = ∑ p = 0 j [ d ∣ p ] C j p × f [ i − 1 ] [ j − p ] f[i][j]=\sum_{p=0}^{j}[d|p]C_{j}^{p}\times f[i-1][j-p] f[i][j]=p=0j[dp]Cjp×f[i1][jp]
O ( n k 2 ) O(nk^2) O(nk2)暴力DP即可。


subtask 3: d = 2 d=2 d=2

d = 2 d=2 d=2代入上面的递推式得:
f [ i ] [ j ] = ∑ p = 0 j [ 2 ∣ p ] C j p × f [ i − 1 ] [ j − p ] f[i][j]=\sum_{p=0}^{j}[2|p]C_{j}^{p}\times f[i-1][j-p] f[i][j]=p=0j[2p]Cjp×f[i1][jp]
f [ i ] [ j ] = ∑ p = 0 j [ 2 ∣ p ] j ! p ! ( j − p ) ! × f [ i − 1 ] [ j − p ] f[i][j]=\sum_{p=0}^{j}[2|p]\frac{j!}{p!(j-p)!}\times f[i-1][j-p] f[i][j]=p=0j[2p]p!(jp)!j!×f[i1][jp]
f [ i ] [ j ] j ! = ∑ p = 0 j [ 2 ∣ p ] 1 p ! f [ i − 1 ] [ j − p ] ( j − p ) ! \frac{f[i][j]}{j!}=\sum_{p=0}^{j}[2|p]\frac{1}{p!}\frac{f[i-1][j-p]}{(j-p)!} j!f[i][j]=p=0j[2p]p!1(jp)!f[i1][jp]
A i ( x ) = ∑ j = 0 ∞ f [ i ] [ j ] × x j j ! , B ( x ) = ∑ j = 0 ∞ [ 2 ∣ j ] x j j ! A_i(x)=\sum_{j=0}^{\infty}f[i][j]\times\frac{x^j}{j!},B(x)=\sum_{j=0}^{\infty}[2|j]\frac{x^j}{j!} Ai(x)=j=0f[i][j]×j!xj,B(x)=j=0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值