今天听讲课的时候听到了这个有趣的东西,记录一下防止忘记。
下降幂多项式
形如 f(x)=∑i=0naixi 的多项式被称为下降幂多项式。
它有一些绝妙的性质。
求值:可以快速求一段 0∼m 内的所有点值。
插值:可以根据 0∼n+1 的点值简单地插出这个下降幂多项式。
对于求值,考虑
f(x)=i=0∑naixi=x!i=0∑nai(x−i)!1
只需要求 f 和 exp 的卷积,乘上 x! 即可计算出 f(x)。
对于插值,考虑
f(x)=i=0∑naixi=i=0∑x(ix)i!ai
二项式反演。
ax=x!1i=0∑x(−1)x−i(ix)f(i)=i=0∑xi!f(i)⋅(x−i)!(−1)x−i
这样就用 0∼n 处的点值插出了所有 ai。只需要一次卷积。
普通多项式转下降幂多项式
考虑分治。
设 f 为待转换的普通多项式,g 为转换后的下降幂多项式。
将 fl∼mid 与 fmid+1∼r 递归处理,求出 gl∼mid 和 gmid+1∼r。
设 m=mid−l+1,len=r−l+1。
那么 gl∼r=gl∼mid+xm⋅gmid+1∼r。
考虑 xm⋅g… 怎么求。其中 g 已经是下降幂多项式了。
我们可以求出 xm 与 g 在 0∼len−1 处的所有点值,xm 可以暴力,g 可以采用上述方法处理。
然后将点值两两相乘得到 xm⋅g 的点值,再插值回去即可得到 xm⋅g。
这样我们就将 gl∼mid 和 gmid+1∼r 合并成了 gl∼r。
下降幂多项式转普通多项式
留坑待填。