给定序列$g_{1\dots n - 1}$,求序列 $f_{0\dots n - 1}$。
其中 $f_i=\sum_{j=1}^if_{i-j}g_jf_i$
边界为 $f_0=1$ 。
方法一
$f=f\times g+1,f=(1-g)^{-1}$
方法二
样例
3 1 2
$f_0$会对所有产生贡献,以此类推
1 3 1 2
1 3 1+9 2+3
1 3 10 5+30
假设我们现在已经做完了$[𝑙,𝑚𝑖𝑑]$,考虑对右边的影响。
$f(i)=\sum_{j=l}^{mid}f(j)g(i-j)$
那么我们可以把$𝑓$的$[𝑙,𝑚𝑖𝑑]$项拿出来,其他项置$0$,在把这个和$𝑔$的$[0,𝑟−𝑙]$卷起来就可以得到影响,然后加上去就好了。
- 为了避免每次分治$n\log n$
- $A[i - l] = f[i]$,最后得到$f[i]+=C[i-l]$
分治做法
1 |
|