时不时更新一下的数学笔记。

目录

  • 相似矩阵
  • 矩阵对角化
  • 求矩阵特征多项式
  • 关于半/全在线卷积的一个优化
  • 一个经典问题的奇怪做法
  • 数论函数与生成函数的一些联系
  • 一个自然数幂和的应用
  • 二元多项式的一个简单应用
  • Lattice Paths and Gaussian Coefficients
  • 高斯系数
  • 格路计数
  • 三个推论
  • 关于生成函数方程求数列递推式的一点思考
  • Vandermond Matrix 的一些性质
  • 另一个自然数幂和题
  • 某模拟题
  • WC2020 上讲的一道题的平凡推法

相似矩阵

定义:若对于矩阵 \(\text A\) 存在矩阵 \(\text B\) 和可逆矩阵 \(\Phi\) 满足 \(\text B=\Phi^{-1}\text A\Phi\) ,那么我们称 \(\text A\) 相似于 \(\text B\) ,记做 \(\text A\sim\text B\)
相似有如下性质:

  1. 反身性: \(\text A\sim\text A\)
  2. 对称性: 如果 \(\text A\sim\text B\) ,那么 \(\text B\sim\text A\)
  3. 传递性: 如果 \(\text A\sim\text B,\text B\sim\text C\) ,那么 \(\text A\sim\text C\)

相似矩阵有如下性质:

  1. 两者的秩相等
  2. 两者的行列式值相等
  3. 两者拥有同样的特征值,尽管相应的特征向量一般不同
  4. 两者拥有同样的特征多项式
  5. 两者可逆性相同,若均可逆,那么两者的逆矩阵同样相似

博主仅对第四点进行证明:


\[\begin{aligned} 0=|\lambda\text E-\text B|=&|\Phi^{-1}\lambda\Phi-\Phi^{-1}\text A\Phi|\\ =&|\Phi^{-1}(\lambda\text E-\text A)\Phi|\\ =&|\Phi^{-1}|\times|\lambda\text E-\text A|\times|\Phi|\\ =&0\\ \Rightarrow&|\lambda\text E-\text A|=0 \end{aligned} \]



矩阵对角化

假设一个矩阵 \(\text A\) 与对角矩阵 \(\text B\)

\[\begin{aligned} \text A^m=&(\Phi^{-1}\text B\Phi)^m\\ =&\Phi^{-1}\text B(\Phi\text A\Phi^{-1})^{m-1}\Phi\\ =&\Phi^{-1}\text B^m\Phi \end{aligned} \]

问题转化为求桥接矩阵 \(\Phi\) ,这个就各凭本事了
还有大概会用到的定理如下:
若 \(n*n\) 矩阵 \(\text A\) 能被矩阵对角化当且仅当 \(\text A\) 有 \(n\) 个线性无关的特征向量 \(v_1,v_2...v_n\) ,且 \(\Phi_{i,j}=v_{j,i}\)。
问题转化为快速求特征向量,那么考虑怎么快速求矩阵的特征多项式.


求矩阵特征多项式

先来一个不带脑子的做法,直接用 \(dft+\)高消\(+idft\) ,时间复杂度 \(O(n^4)\) ,实现可以用插值或者Bluestein

然后考虑用相似矩阵来优化运算,先来个 \(suncongbo\) 队长教育我的做法:
假设最初的矩阵是 \(\text A\) ,我们每次给 \(\text A\) ,左乘一个初等行变换矩阵,然后右乘一个初等列变换矩阵。
考虑最后能消成什么矩阵,发现是上海森堡矩阵,因为假如在消其它行第 \(i\) 列的时候用第 \(i\) 行去消的话会在做列变换的时候影响第 \(i\) 行,这样没有达到预期的效果,于是用第 \(i+1\) 行去消,最后消出来就是上海森堡矩阵。
这个玩意儿怎么快速求特征多项式呢?
简单观察后发现最后一行只有两列有值,那么枚举选的是哪一列,如果选第 \(n\) 列,就是 \(\lambda-a_{n,n}\) 乘以左上角子矩阵的特征多项式,若选第 \(n−1\) 列,那么接下来一定是若干个第 \(n−i\) 行选第 \(n−i-1\) 列,然后会有一行 \(j\) 选第 \(n\) 列,由于 \(a_{n−1,n−2},a_{n−2,n−3}...a_{j+1,j},a_{j,n}\) 都不含变量 \(\lambda\) 所以直接递推即可,复杂度 \(O(n^3)\)。
code


关于半/全在线卷积的一个优化

首先知道通过倍增的思想可以把全在线转化为半在线问题,故下面只考虑半在线卷积的优化。
考虑分治的时候分成 \(b\) 段,然后算贡献可以看成一个类似二维卷积的东西,然后复杂度是 \(O(n*log^{1+\epsilon}n)\) 的。
但一般为了方便实现可以取 \(b=\log n\) ,然后对第二维暴力卷积,估计跑出来也比上面的做法快...


一个经典问题的奇怪做法

给出一个 \(k\) 次多项式 \(f(x)\) 和一个常数 \(q\) ,并进行 \(m\) 次询问,每次给出一个 \(n\) ,求 \(Ans=\sum\limits_{i=0}^nf(i)q^i,k\le 10^6, n\le 10^9, m\le 10^5\)

考虑简单情况,多次求 \(Ans=\sum\limits_{i=0}^ni^tq^i\)
列个生成函数出来搞一下:

\[\begin{aligned} Ans=&[x^t]\sum\limits_{i\ge0}\frac{x^i}{i!}\sum\limits_{j=0}^nj^iq^j\\ =&[x^t]\sum\limits_{i=0}^nq^i\sum\limits_{j\ge0}\frac{(xi)^j}{j!}\\ =&[x^t]\sum\limits_{i=0}^n(qe^x)^i\\ =&[x^t]\frac{q^{n+1}e^{(n+1)x}-1}{qe^x-1}\\ \end{aligned} \]

注意此处在 \(q=1\) 的时候要同时除以一个 \(x\) 不然分母不存在逆元
简单观察一下发现答案是关于 \(n+1\) 的 \(t\) 次多项式,于是多点求值即可
然后考虑原问题,构造一个多项式 \(F(x)=\sum\limits_{i=0}^kf_{k-i}x^i\)
然后答案就可以表示为 \([x^k]\frac{q^{n+1}e^{(n+1)x}-1}{qe^x-1}*F(x)\)
同样只需要多点求值一下即可。


数论函数与生成函数的一些联系

目前学过的有 \(DGF\) 和贝尔级数两种东西。
观察一下发现本质上都是在对这个东西进行变形: \(\sum\limits_{i\ge0}f(i)=\prod\limits_{p\in Prime}(1+\sum\limits_{i\ge1}f(p^i))\)
假如这是个完全积性函数,也可以写成: \(\sum\limits_{i\ge0}f(i)=\prod\limits_{p\in Prime}\frac1{1-f(p)}\)
这个时候考虑 \(\zeta(s)=\sum\limits_{n\ge1}\frac1{n^s}=\prod\limits_{p\in Prime}\frac{p^s}{p^s-1}\)
然后就可以构造出 \(DGF:F(s)=\sum\limits_{n\ge1}\frac{f(n)}{n^s}\)
发现你对 \(DGF\) 卷积就是做了个狄利克雷卷积,于是就可以对 \(DGF\) 乱操作了,注意到 \(\ln\) 和 \(\exp\) 的正确性是根据 \(\Lambda(x)\) 的 \(DGF\) 分析出来的。
但你发现这个东西拓展性并不是很强,因此下面介绍更为直观的贝尔级数。
这个东西就是把上面连乘形式的每一项抽出来,对每个素数进行考虑。
即定义 \(f_p(x)=\sum\limits_{i\ge0}f(p^i)x^i\) ,于是 \((f*g)_p(x)=f_p(x)*g_p(x)\) ,只需要把给出的函数转成贝尔级数然后乘起来再转回去,在某些推导的时候能轻松一点。
例题?不存在的,非要说的话就去做狄利克雷k次根


一个自然数幂和的应用

设 \(f_0(x)=1,f_k(x)=\sum\limits_{i=0}^x(Ai^2+Bi+C)f_{k-1}(i)\) ,求 \([x^m]f_0(x),[x^m]f_1(x)...[x^m]f_n(x)\)。
其中 \(n\le2*10^5,m,A,B,C\le10^9\)。

尝试一下会发现直接推有点难搞,不妨尝试从全局的角度考虑组合意义。
令 \(g(x)=Ax^2+Bx+C\)
发现相当于现在有 \(0,1,...m\) 这些点,对于 \(i\le j\) 有权值为 \(g(i)\) 的边,一条路径的贡献是边权之积,求从 \(0\) 走 \(0,1,...,n\) 步到达 \(m\) 点的所有路径的贡献和。
发现这是 \(m+1\) 元完全齐次对称式的生成函数 \(H(x)=\prod\limits_{i=0}^m\frac1{1-g(i)x}\) ,我们要求这个多项式 \(0,1...n\) 次项的系数。
容易想到求 \(E(x)=\prod\limits_{i=0}^m(1-g(i)x)\) 再多项式求逆一下。
直接搞还是不方便,考虑给 \(g(x)\) 配方一下,相当于问题变成了求 \(\prod\limits_{i=0}^m(1-(i^2+A)x)\) 的系数。
再考虑对称多项式的结论: \(E(x)=\frac1{e^{\int\frac{P(x)-n}x\text dx}}\)
于是只用考虑求 \(i^2+A\) 的等幂和。
那么列一下等幂和的式子:

\[\begin{aligned} P(x)=&\sum\limits_{i\ge0}\frac{x^i}{i!}\sum\limits_{j=0}^m(j^2+A)^i\\ =&\sum\limits_{i\ge0}x^i\sum\limits_{j=0}^m\sum\limits_{k=0}^i\frac{(j^2)^k}{k!}*\frac{A^{i-k}}{(i-k)!}\\ =&e^{Ax}*\sum\limits_{i\ge0}\frac{x^i}{i!}\sum\limits_{j=0}^mj^{2i}\\ \end{aligned} \]

看看后面那一坨是啥,发现可以先求出 \(\sum\limits_{i=0}^me^{ix}=\frac{e^{(m+1)x}-1}{e^x-1}\) 的 \(0,1...2n\) 项然后取出偶数项系数,这题就做完了。
经过一定的思考,发现把 \(g(x)\) 改写成 \(k\) 次多项式目前没法做到比较优秀的复杂度就是博主菜
观察一下列出来的生成函数本质发现就是列了一个 \(\sum\limits_{i=0}^me^{g(i)x}\) ,这个东西感觉只在当 \(g(x)\) 除去常数项最多有一项不为 \(0\)


二元多项式的一个简单应用

给一个 \(n\) 个数的数列,第 \(i\) 个数是 \(a_i\), 所有数的和为 \(m\), 对于一个排列 \(p\) ,设 \(b_i=\sum\limits_{i=1}^ja_{p_j}\) ,那么这个排列的贡献就是 \(\frac{m!}{\prod\limits_{i=2}^nb_i}\)

考虑转一个组合意义,发现可以把第 \(i\) 个数看成有 \(a_i\) 个颜色为 \(i\) 的带标号球,先假定贡献是 \(\frac{m!}{\prod\limits_{i=1}^nb_i}\) ,发现这个东西就是给每个颜色定一个顺序依次插入,限制是每种颜色的球标号为 \(1\) 的必须放在其它标号的前面,且后插入的球的 \(1\) 号球必须在序列头。合法序列总数计算出来就是答案,简单推一下发现是 \(\frac{m!}{\prod\limits_{i=1}^na_i}\)

假如是题目要求的贡献,那么第一个插入的颜色去掉限制即可。

于是可以硬点第一次插入的颜色然后容斥一下在它之前插入的,重写答案: \(Ans=\sum\limits_{t=1}^n\sum\limits_{S}(-1)^{|S|}\frac{(\sum\limits_{i\in S}a_i)!}{\prod\limits_{i\in S}a_i}*\binom{(\sum\limits_{i\in S}a_i)+a_t-1}{a_t-1}*\binom{m}{(\sum\limits_{i\in S}a_i)+a_t}\frac{(\sum\limits_{i\notin S,i\not=t}a_i)!}{\prod\limits_{i\notin S,i\not=t}a_i}\)
然后一波化简可以变成这个: \(Ans=\frac{m!}{\prod\limits_{i=1}^na_i}\sum\limits_{t=1}^na_t^2\sum\limits_{S}\frac{(-1)^{|S|}}{(\sum\limits_{i\in S}a_i)+a_t}\)

推导到这里,大概有以下经典做法:

  1. 直接枚举每个 \(t\) ,然后把 \(\sum\limits_{i\in S}a_i\) 看成状态做 \(dp\) 算算系数,复杂度是 \(O(n^2m)\)
  2. 发现可以用补集转化的思想优化上面的 \(dp\) ,复杂度降到了 \(O(nm)\)

但上述做法没法看出什么明显的优化,因此继续观察可以发现我们相当于枚举出一个集合 \(S\) ,里面有一个数的贡献是自身权值的平方,其余数的权值是 \(-1\)
那么直接记 \(f_{i,j,0/1}\) 表示考虑前 \(i\) 种颜色,集合的和为 \(j\) ,是否选出了平方贡献的数的系数和。
这个东西直接转移同样可以做到 \(O(nm)\) 的复杂度,code

然后冷静一下发现这个组合意义很生成函数,于是可以构造出一个二元生成函数 \(F(x,y)=\prod\limits_{t=1}^n(1+x^{a_t}(a_t^2y-1))\)
注意到我们只需要最后 \([x^ty]\) 的系数,所以可以改写模意义下的数为一个二元组 \((a,b)=a+b*y\) ,然后就变成了一个一元函数问题,直接分治 \(ntt\) 即可。
当然也可以用博主之前想过的一个 \(trick\) 优化掉一个 \(\log\) ,大概就是用多项式 \(exp\) 和分治 \(ntt\) 平衡一下复杂度。
这里只写了分治 \(ntt\) 做法 code


Lattice Paths and Gaussian Coefficients

高斯系数

定义 \(g_n(x)=(x-1)(x-q)\cdots(x-q^{n-1}),\ g_0(x)=1\), 将这个称作高斯多项式。
对于等式 \(x^n=\sum\limits_{k=0}^n\begin{gather*}\begin{bmatrix}n\\k\end{bmatrix}\end{gather*}_qg_k(x)\), 把每一项的系数称作高斯系数。
高斯系数有如下递推式: \(\begin{gather*}\begin{bmatrix}n\\m\end{bmatrix}\end{gather*}_q\)\(=\begin{gather*}\begin{bmatrix}n-1\\m-1\end{bmatrix}\end{gather*}_q\)\(+q^m\begin{gather*}\begin{bmatrix}n-1\\m\end{bmatrix}\end{gather*}_q(n\ge m\ge1)\),\(\begin{gather*}\begin{bmatrix}n\\0\end{bmatrix}\end{gather*}_q=1\)
由于式子比较难打证明就咕咕咕了,反正挺容易的
定义 \([n]_q=\frac{1-q^n}{1-q},[n]_q!=[n]_q[n-1]_q\cdots[1]_q=\frac{(1-q^n)(1-q^{n-1})\cdots(1-q)}{(1-q)^n}\) ,我们把这个叫做 \(q-整数\) 和 \(q-阶乘\)
然后发现这个形式和组合数非常像,可以推出 \(\begin{gather*}\begin{bmatrix}n\\m\end{bmatrix}\end{gather*}_q=\frac{[n]_q!}{[m]_q![n-m]_q!}(n\ge m\ge0)\),所以也有 \(\begin{gather*}\begin{bmatrix}n\\m\end{bmatrix}\end{gather*}_q\)\(=\begin{gather*}\begin{bmatrix}n\\n-m\end{bmatrix}\end{gather*}_q\)
类似的,可以定义 \(q-上升\)/\(下降幂\),还有 \(q-斯特林数\), 这里不进行深入讨论。

格路计数

在这里讨论的格路计数要求只能向右和向上走。

现在考虑给每条路径带上权值

特征图像的相似度的权重系数 相似特征数是什么_多项式


这条路径的权值为\(q^{有点的格子数}\), 现在要算出所有路径的权值和。

这个东西就是 \(\begin{gather*}\begin{bmatrix}n+m\\m\end{bmatrix}\end{gather*}_q\),没错,证明又咕掉了。

三个推论

\((1+xq)(1+xq^2)\cdots(1+xq^n)=\sum\limits_{k=0}^n\begin{gather*}\begin{bmatrix}n\\k\end{bmatrix}\end{gather*}_qq^{\binom{k+1}2}x^k\)

观察一下发现就是单调上升转成单调不降的想法。

假设有可重集合 \(S(k_1,k_2...k_m),s.t.\ n=\sum\limits_{i=1}^mk_i\) (表示有 \(k_i\) 个 \(i\)),定义 \(inv(P)\) 表示一个序列 \(P\) 的逆序对数 \((i<j\&\&P_i>P_j)\)
那么 \(\begin{gather*}\begin{bmatrix}n\\k_1k_2k_3...k_m\end{bmatrix}\end{gather*}_q=\sum\limits_{P\in S(k_1,k_2...k_m)}q^{inv(P)}\)

证明用归纳法

\(\sum\limits_{\sigma\in P(n)}q^{inv(\sigma)}=\begin{gather*}\begin{bmatrix}n\end{bmatrix}\end{gather*}_q!\)

证明显然


关于生成函数方程求数列递推式的一点思考

假设有 \(A(x)F^2(x)+B(x)F(x)+C(x)=0\), 能不能快速求 \(F(x)\)

首先有求根公式: \(F(x)=\frac{-B(x)\pm\sqrt{\Delta}}{2A(x)}\),带入常数项进行检验一般可以舍掉一根,我们假设最后有 \(F(x)=\frac{-B(x)-\sqrt{\Delta}}{2A(x)}\), 如果选的是另一个根情况相似。
然后简单推导一下:

\[\begin{aligned}F(x)=&-\frac{B(x)+\sqrt{\Delta}}{2A(x)}\\ \Rightarrow&\sqrt\Delta=B(x)-2A(x)F(x)\\ F'(x)=&-\frac{2\Delta A'(x)(B(x)+\sqrt\Delta)-A(x)(2B'(x)\Delta+\Delta'\sqrt\Delta)}{4A^2(x)\Delta}\\ \Rightarrow&\sqrt\Delta=\frac{-4A^2(x)\Delta F'(x)+2\Delta(A(x)B'(x)-A'(x)B(x))}{2\Delta A'(x)-A(x)\Delta'}\\ \end{aligned} \]

发现可以建立 \(F(x)\) 和 \(F'(x)\) 的关系,大概在 \(A(x),B(x),C(x)\) 很好算的时候就能解出来了。
下面简单尝试一下,考虑带入卡特兰数的生成函数方程。
由于 \(xF^2(x)-F(x)+1=0\), 对应一下就发现有 \(A(x)=x,B(x)=-1,C(x)=1,\Delta=1-4x\)

\[\begin{aligned}\sqrt\Delta=&1-2xF(x)\\ \sqrt\Delta=&\frac{-4x^2(1-4x)F'(x)+(2-8x)}{2-4x}\\ \Rightarrow&(2-4x)-(1-2x)4xF(x)=(4x^2-x)4xF'(x)+(2-8x)\\ \Rightarrow&(4x^2-x)F'(x)+(1-2x)F(x)=1\\ \forall n>0&,4(n-1)f_{n-1}-nf_n+2f_{n-1}-f_n=0\\ \end{aligned} \]

相信接下来的步骤大家都会了,例子就举到这里。
接下来尝试能不能更进一步。
考虑不带入实值,直接对上面的 \(F(x),F'(x)\) 建立等式,发现可以写成这样的形式: \(F(x)*P(x)+F'(x)*Q(x)+T(x)=0\)
假设 \(A(x),B(x),C(x)\) 的度数同阶,都为 \(m\),那么不难发现 \(P(x),Q(x),T(x)\) 的度数大概在 \(m^3\) 的样子。
这也告诉我们 \(f_1,f_2...\) 这个数列可以被写成一个 \(m^3\) 阶递推的形式,但简单观察后容易发现这是非常系数的递推,所以看起来很难通过 \(BM\) 这种不动脑子的东西找递推式,因此每次大概只能暴力或者手玩出 \(P(x),Q(x),T(x)\)


Vandermond Matrix 的一些性质

\(\det\) 及一种基于 \(\text{the involution principle}\),也可以直接归纳法证明。
快速求 \(\det\):
先考虑一个没有经过大脑思考的做法,考虑求 \(\prod\limits_{1\le i\not=j\le n}(x_i-x_j)\) 然后开根,这个是显然的多点求值的形式,然而你并不知道该取那个根作为答案所以这个做法gg了
但上述做法同样有可以借鉴的地方,考虑这么一个算法: 我们暴力分治做,然后 \(merge\) 的时候拿左子树的积在右子树多点求值一下,复杂度 \(O(M(n)\log^2n)\).
尝试做到更快?
考虑有什么地方可以进行优化,发现上述做法会对每个节点取模 \(\log n\) 次,观察一下发现这 \(\log n\) 个乘积是不交的,所以可以把对单个节点取模的次数降到 \(1\) 次,复杂度降为了 \(O(M(n)\log n)\)
\(\text{Inverse}:\)
直接爆算伴随矩阵固然是好方法,但 \(\text{Vandermond matrix}\) 比较特殊,可以考虑观察它的一些性质来更优美的求逆。
首先来入门一下对称多项式
求逆的出发点仍然是伴随矩阵,我们考虑求如下矩阵的 \(\det\):
\(V_i=\begin{gathered}\begin{pmatrix} 1 & 1 & ... & 1\\x_1 & x_2 & ... & x_n\\...\\x_1^{i-1} & x_2^{i-1} & ... & x_n^{i-1}\\x_1^{i+1} & x_2^{i+1} & ... & x_n^{i+1}\\...\\x_1^n & x_2^n & ... & x_n^n\end{pmatrix}\end{gathered}\)
这个看起来很有规律,但不好直接下手,因此补上一列 \(x\) 来求:
\(f(x)=\det\begin{gathered}\begin{pmatrix} 1 & ... & 1 & 1\\x_1 & ... & x_n & x\\...\\x_1^n & ... & x_n^n & x^n\end{pmatrix}\end{gathered}=\prod\limits_{i=1}^n(x-x_i)\prod\limits_{i>j}(x_i-x_j)\)
根据 \(\text{Laplace}\) 展开定理和上式有: \([x^i]=(-1)^{i+n+2}\det V_i=(-1)^{n-i}e_{n-i}(x_1,x_2...x_n)\prod\limits_{i>j}(x_i-x_j)\)
\(\Rightarrow\det V_i=e_{n-i}(x_1,x_2...x_n)\prod\limits_{i>j}(x_i-x_j)\)
现在设 \(V=\begin{gathered}\begin{pmatrix} 1 & 1 & ... & 1\\x_1 & x_2 & ... & x_n\\...\\x_1^{n-1} & x_2^{n-1} & ... & x_n^{n-1}\end{pmatrix}\end{gathered}\)
那么根据上面的推导,可以轻松算出 \((V^{-1})_{i,j}=(-1)^{i+j}\frac{e_{n-1-j}(\{x_1,x_2...x_n\}\backslash\{x_i\})\prod\limits_{a>b,a\not=i,b\not=i}(x_a-x_b)}{\prod\limits_{a>b}(x_a-x_b)}=(-1)^{i+j}\frac{e_{n-1-j}(\{x_1,x_2...x_n\}\backslash\{x_i\})}{\prod\limits_{a>b,a=i\text{ or }b=i}(x_a-x_b)}\)。
另一方面,从插值与求值的角度可以同样可以说明逆矩阵长成上述的样子。

Lagrange 插值
如果已知 \(f(x)\) 的 \(n\) 个点值 \((x_1,y_1),(x_2,y_2)...(x_n,y_n),\forall i\not=j, x_i\not=x_j\),可以构造出一个满足经过这 \(n\) 个点的 \(n-2\) 次多项式。
考虑构造,首先有 \(f(x_0)=f(x)\mod x-x_0\),所以现在得到了 \(n\) 个同余方程组 \(f(x)\equiv y_i\mod x_i\)。
那么利用中国剩余定理,就可以快速构造一个多项式 \(\sum\limits_{i=1}^ny_i\prod\limits_{j\not=i}\frac{x-x_j}{x_i-x_j}\)。

现在考虑用线性代数来理解,首先求点值可以看成建一个关于 \(x_1,x_2...x_n\) 的 \(\text{Vandermonde matrix}\),这样有 \(\begin{gathered}\begin{pmatrix} f_0 & f_1 & ... & f_{n-1}\end{pmatrix}\end{gathered}*V=\begin{gathered}\begin{pmatrix} y_1 & y_2 & ... & y_{n}\end{pmatrix}\end{gathered}\),给两边同乘一个逆矩阵,就有 \(\begin{gathered}\begin{pmatrix} y_1 & y_2 & ... & y_{n}\end{pmatrix}\end{gathered}*V^{-1}=\begin{gathered}\begin{pmatrix} f_0 & f_1 & ... & f_{n-1}\end{pmatrix}\end{gathered}\)
那么 \((V^{-1})_{i,j}\) 显然就是 \(\prod\limits_{k\not=i}\frac{x-x_k}{x_i-x_k}\) 的 \(j-1\)


另一个自然数幂和题

先给出两个数 \(n,q\),定义 \(f(x)=\frac{b}{c+e^{ax+d}}\),给 \(q\) 组 \(a,b,c,d\),对于每一组数据,设 \(a*x_0+d=0\),求 \(f^{(n)}(x_0)\) 的值,答案对 \(998244353\) 取模。
\(n,q\le10^5\)

先特判掉 \(c=-1\) 和 \(0\)

\[\begin{aligned}f(x)=&\frac{\frac bc}{1-(-\frac1c)e^{ax+d}}\\ =&\frac bc\sum\limits_{i\ge0}(-\frac1c)^ie^{(ax+d)i}\\ f^{(n)}(x)=&\frac bc\sum\limits_{i\ge0}(-\frac1c)^ia^ni^ne^{(ax+d)i}\\ f^{(n)}(x_0)=&\frac bc*a^n\sum\limits_{i\ge0}i^n(-\frac1c)^i\\ \end{aligned} \]

由于判掉特殊情况后,这个东西一定是收敛的所以可以算,容易看出后面是要求 \([x^n]\frac1{1+\frac1c*e^x}\)。
然后感觉脑袋短路了,只瞎编出来一个看起来不是很行的做法
下面把 \(c\) 看成变量做点小变形:\([x^n]\frac1{1+\frac1c*e^x}=\frac c{e^x+c}\)
设 \(F(x)=e^x+c,G(x)=\frac1{F(x)}\),发现 \(G_0=\frac1{1+c}\),且我们只用知道 \(G_n\) 的值
那么考虑求逆的过程,再考虑 \(G_0\) 对 \(G_n\) 的贡献。
假设 \(G_0\) 到 \(G_n\) 的一种转移可以写成 \(G_0\rightarrow G_i\rightarrow G_j\cdots\rightarrow G_k\rightarrow G_n\)
那么这一次转移的贡献显然是 \((-\frac1{i!}*G_0)*(-\frac1{(j-i)!}*G_0)*\cdots*(-\frac1{(n-k)!}*G_0)\)
可以轻松看出是个关于 \(G_0\) 的多项式,且 \(i\) 次项系数是 \([x^n](-1)^i(e^x-1)^i\),这就是斯特林数,预处理一下即可求出关于 \(G_0\) 的多项式。
最后对 \(c\)


某模拟题

给出 \(n,m\),要求快速算 \(\sum\limits_{i=0}^n(-1)^i\sum\limits_{j=0}^nj^m\binom ji(m+i)^j\)
\(n\le10^5,m\le998244353\)

看着右边有二项式展开的影子,于是交换求和号直接推就完了:

\[\begin{aligned}Ans=&\sum\limits_{t=0}^nt^m\sum\limits_{i=0}^n\binom ti(-1)^i(m+i)^t\\ =&\sum\limits_{t=0}^nt^m\sum\limits_{i=0}^n\binom ti(-1)^i[x^t]e^{(m+i)x}\\ =&\sum\limits_{t=0}^nt^m[x^t](e^{mx}*(\sum\limits_{i=0}(-1)^ie^{ix}\binom ti))\\ =&\sum\limits_{t=0}^nt^m[x^t]e^{mx}*(1-e^x)^t\\ \end{aligned} \]

然后 \((1-e^x)^t\) 是有符号第二类斯特林数(是什么并不重要),然后这个东西的 \([x^0]...[x^{t-1}]\) 都是 \(0\),所以答案就是 \(\sum\limits_{t=0}^nt^m(-1)^tt!\)

题解不知道在说什么


WC2020 上讲的一道题的平凡推法

给出 \(n,b\) 和一个数组 \(a\),对 \(0\le m\le n\) 计算:
\(f_m(n)=\sum\limits_{i=0}^na_i\sum\limits_{j=0}^ib^j\binom mj\binom{n-m}{i-j}\)
\(n\le10^6\)

考虑硬推,定义 \(A(x)=\sum\limits_{i=0}^na_{n-i}x^i\)

\[\begin{aligned}f_m(n)=&[x^n]A(x)(bx+1)^m(x+1)^{n-m}\\ =&[x^n]A(x)(x+1)^n(\frac{(b-1)x}{1+x}+1)^m\\ \end{aligned} \]

考虑算 \([x^n]A(x)(x+1)^{n-m}(b-1)^mx^m\)
发现是个卷积。
发现整回上面的也是个卷积。
于是做完了。