「2020 省选联考 A 卷 D1T2」组合数问题
从现在开始我 blog 写题解要附上简要题意(
给定 $m$ 次多项式 $F(x)=\sum_{i=0}^{m}f_{i}x^{i}$,试求
在 $\operatorname{mod}p$ 意义下的值。
其中 $1\leqslant n,x,p\leqslant 10^{9},0\leqslant f_{i}\leqslant 10^{9},1\leqslant m\leqslant\min(n,1000)$。
不过话说回来,D2 早上去机房听烜说这是道衡水的原题,而且还是比原题简单的那种。
首先我们把 $F(k)$ 拆开,得到
考虑到 $m$ 比较小,我们可以对于外层 $\sum$ 的每一项单独求值。定义
于是我们构造矩阵
和初始向量
那么
虽然我在我的另一个 blog 里写过了,不过由于某些原因那个 blog 倒了,于是我在这里再写一遍。
如果直接使用矩阵快速幂来计算 $A^{n}$ 的话,复杂度是 $O(m^{3}\log n)$ 的,但是这还不够。
考虑我们能不能构造出一个奇妙的序列 $c_{0},c_{1},\cdots,c_{m+1}$ 使得 $C(A)=\sum_{i=0}^{m+1}c_{i}A^{i}=A^{n}$。
如果我们构造出来了,令 $S_{k}$ 表示 $S$ 从上往下第 $k$ 维的值,从 $0$ 开始标号。那么
注意到 $(A^{i}S)_{k}$ 就是 $G_{i,k}(x)$,不过如果 $k=m+1$ 就是 $1$。这样我们就可以在 $O(m^{2})$ 的复杂度内计算出答案。
我们设 $A^{n}=P(A)Q(A)+C(A)$,如果我们能够找到一个 $m+2$ 次多项式 $H$ 使得 $Q(A)=0$,就可以有 $C(A)=A^{n}\operatorname{mod}Q(A)$。
一下是一些为了求出 $H$ 所必要的矩阵相关知识。
对于矩阵 $A$,如果等式 $(\lambda I-A)v=0$ 成立,我们称 $\lambda$ 是 $A$ 的一个特征值,$v$ 是 $A$ 的一组特征向量。
有两个连 shadowice dalao 都不会证的结论:
- 满足 $\text{Det}(A)\neq 0$,即满秩的 $n\times n$ 的矩阵 $A$ 拥有 $n$ 组线性无关的特征向量。
- 当且仅当 $\text{Det}(\lambda I-A)=0$ 时存在这样的 $v$。
显然我们刚才构造的矩阵 $A$ 是满秩的。于是根据 Cayley-Hamilton 定理,有 $\prod_{k=0}^{m+1}(\lambda_{k}I-A)=0$,其中 $\lambda_{0},\lambda_{1},\cdots,\lambda_{m+1}$ 表示 $A$ 的 $m+2$ 组特征向量。
于是 $Q(A)=\prod_{k=0}^{m+1}(\lambda_{k}I-A)$。
考虑另外一个多项式 $R(\lambda)=\text{Det}(\lambda I-A)$,根据 shadowice dalao 的 blog,这两个多项式的系数对应相等。
而显然 $\text{Det}(\lambda I-A)=(\lambda-1)(\lambda-x-1)^{m+1}$,使用分治 NTT 可以在 $O(m\log^{2}m)$ 的复杂度内计算出来。
那么总结一下:
- 计算 $R(\lambda)=\text{Det}(\lambda I-A)=(\lambda-1)(\lambda-x-1)^{m+1}$,复杂度 $O(m\log^{2}m)$。
- 设 $R(\lambda)=\sum_{i=0}^{m+2}q_{i}\lambda^{i}$,有 $Q(A)=\sum_{i=0}^{m+2}q_{i}A^{i}=0$。
- 计算 $C(A)=A^{n}\operatorname{mod}Q(A)$,时间复杂度 $O(m\log m\log n)$。
- 设 $C(A)=\sum_{i=0}^{m+1}c_{i}A^{i}$,有 $(A^{n}S)_{k}=\sum_{i=0}^{m+1}c_{i}(A^{i}S)_{k}$,也即 $G_{n,k}(x)=\sum_{i=0}^{m+1}c_{i}G_{i,k}(x)$。
- 对于所有的 $0\leqslant i\leqslant m+1,0\leqslant k\leqslant m$ 计算 $G_{i,k}(x)$,我们发现 $G$ 的暴力递推式可以转化成 EGF,于是做 $m$ 遍卷积,复杂度 $O(m^{2}\log m)$。
那么总体的复杂度相当于 $O(m^{2}\log m)$。
然而我一点都不想写这个玩意(