下降幂多项式

今天听讲课的时候听到了这个有趣的东西,记录一下防止忘记。

下降幂多项式

形如 f(x)=i=0naixif(x) = \sum_{i = 0}^{n}a_i x^{\underline{i} } 的多项式被称为下降幂多项式

它有一些绝妙的性质。

求值:可以快速求一段 0m0 \sim m 内的所有点值。

插值:可以根据 0n+10 \sim n + 1 的点值简单地插出这个下降幂多项式。

对于求值,考虑

f(x)=i=0naixi=x!i=0nai1(xi)!\begin{aligned} f(x) & = \sum_{i = 0}^{n} a_i x^{\underline{i} } \\ & = x!\sum_{i = 0}^{n} a_i \frac{1}{(x - i)!} \end{aligned}

只需要求 ffexp\exp 的卷积,乘上 x!x! 即可计算出 f(x)f(x)

对于插值,考虑

f(x)=i=0naixi=i=0x(xi)i!ai\begin{aligned} f(x) & = \sum_{i = 0}^{n} a_i x^{\underline{i} } \\ & = \sum_{i = 0}^{x} \binom{x}{i} i! a_i \end{aligned}

二项式反演。

ax=1x!i=0x(1)xi(xi)f(i)=i=0xf(i)i!(1)xi(xi)!\begin{aligned} a_x & = \frac{1}{x!} \sum_{i = 0}^{x} (-1)^{x - i} \binom{x}{i} f(i) \\ & = \sum_{i = 0}^{x}\frac{f(i)}{i!} \cdot \frac{(-1)^{x - i}}{(x - i)!} \end{aligned}

这样就用 0n0 \sim n 处的点值插出了所有 aia_i。只需要一次卷积。

普通多项式转下降幂多项式

考虑分治。

ff 为待转换的普通多项式,gg 为转换后的下降幂多项式。

flmidf_{l\sim mid}fmid+1rf_{mid + 1 \sim r} 递归处理,求出 glmidg_{l\sim mid}gmid+1rg_{mid + 1 \sim r}

m=midl+1m = mid - l + 1len=rl+1len = r - l + 1

那么 glr=glmid+xmgmid+1rg_{l\sim r} = g_{l\sim mid} + x^m \cdot g_{mid + 1 \sim r}

考虑 xmgx^{m} \cdot g_{\ldots} 怎么求。其中 gg 已经是下降幂多项式了。

我们可以求出 xmx^{m}gg0len10 \sim len - 1 处的所有点值,xmx^m 可以暴力,gg 可以采用上述方法处理。

然后将点值两两相乘得到 xmgx^m\cdot g 的点值,再插值回去即可得到 xmgx^m\cdot g

这样我们就将 glmidg_{l\sim mid}gmid+1rg_{mid + 1 \sim r} 合并成了 glrg_{l\sim r}

下降幂多项式转普通多项式

留坑待填。