zszz,使用 NTT 可以在 \(\mathcal O(n\log n)\) 的时间内求出两个多项式的卷积、以及一个多项式的 \(\text{inv},\ln,\exp,\text{sqrt}\) 等,但是如果模数不是 NTT 模数(譬如 \(10^9+7\))并且复杂度允许 \(\mathcal O(n^2)\) 实现上述操作,那么再使用 \(n\log n\) 的 NTT 优化版多项式全家桶就不合适了,因此我们也要懂得如何暴力 \(n^2\) 递推。

多项式乘法

这个就过于弱智了吧……直接枚举对应位然后往它们的和的地方贡献即可,这个幼儿园就学过了(

多项式求逆

假设 \(B\) 为 \(A\) 的逆元,那么显然有 \(AB=1\),即

\[\sum\limits_{i=0}^nA_iB_{n-i}=[n=0]
\]

\[A_0B_n=-\sum\limits_{i=1}^nA_iB_{n-i}(n\ge 1)
\]
\[B_n=-\dfrac{1}{A_0}\sum\limits_{i=1}^nA_iB_{n-i}
\]

边界 \(B_0=\dfrac{1}{A_0}\)

多项式 \(\ln\)

假设 \(B(x)=\ln A(x)\),那么注意到在我们 NTT 逆元时,我们采用了求导,再积分回去的做法,即 \(B’(x)=\dfrac{A’(x)}{A(x)}\),因此我们只需对 \(A(x)\) 求一遍逆,再积分回去即可,不过事实上还有更简洁(常数更小)的推法,具体来说

\[B'(x)A(x)=A'(x)
\]
\[(n+1)A_{n+1}=\sum\limits_{i=0}^nB_{i+1}(i+1)A_{n-i}
\]
\[B_{n+1}(n+1)A_0=A_{n+1}(n+1)-\sum\limits_{i=0}^{n-1}B_{i+1}(i+1)A_{n-i}
\]
\[B_{n+1}=\dfrac{A_{n+1}(n+1)-\sum\limits_{i=1}^{n}iB_iA_{n+1-i}}{A_0(n+1)}
\]
\[B_n=\dfrac{nA_n-\sum\limits_{i=1}^{n-1}iB_iA_{n-i}}{A_0n}
\]

一般在取 \(\ln\) 时默认 \(A_0=1\),因此一般来说上式也可以写作

\[B_n=A_n-\dfrac{1}{n}\sum\limits_{i=1}^{n-1}iB_iA_{n-i}
\]

多项式 \(\exp\)

根据 \(\exp\) 的性质,\(\exp’(A(x))=\exp(A(x))A(x)\),因此假设 \(B(x)=\exp(A(x))\),那么显然有

\[B'(x)=B(x)A'(x)
\]
\[B_{n+1}(n+1)=\sum\limits_{i=0}^nB_{n-i}A_{i+1}(i+1)
\]
\[B_{n+1}=\dfrac{1}{n+1}\sum\limits_{i=0}^nB_{n-i}A_{i+1}(i+1)
\]
\[B_n=\dfrac{1}{n}\sum\limits_{i=1}^{n}B_{n-i}A_ii
\]

多项式 \(\exp_{\le k}\)

对于多项式 \(A(x)\),定义其 \(\exp_{\le k}\) 为

\[\sum\limits_{i=0}^k\dfrac{A^i(x)}{i!}
\]

因此 \(\exp(A(x))\) 也可视为 \(\exp_{\le\infty}\)

那么怎么暴力求这东西呢?我们假设 \(B(x)=\sum\limits_{i=0}^k\dfrac{A^i(x)}{i!}\),那么

\[B'(x)=\sum\limits_{i=0}^k\dfrac{iA^{i-1}(x)A'(x)}{i!}
\]
\[B'(x)=\sum\limits_{i=0}^k\dfrac{A^{i-1}(x)A'(x)}{(i-1)!}
\]
\[B'(x)=A'(x)\sum\limits_{i=0}^{k-1}\dfrac{A^{i}(x)}{i!}
\]

我们惊奇地发现 \(\sum\limits_{i=0}^{k-1}\dfrac{A^i(x)}{i!}=B(x)-\dfrac{A^k(x)}{k!}\)

于是

\[B'(x)=A'(x)(B(x)-\dfrac{A^k(x)}{k!})
\]

我们假设 \(C(x)=\dfrac{A^k(x)}{k!}\),那么

\[B_{n+1}(n+1)=\sum\limits_{i=0}^nA_{i+1}(i+1)(B_{n-i}-C_{n-i})
\]
\[B_{n+1}=\dfrac{1}{n+1}\sum\limits_{i=0}^nA_{i+1}(i+1)(B_{n-i}-C_{n-i})
\]
\[B_n=\dfrac{1}{n}\sum\limits_{i=1}^nA_ii(B_{n-i}-C_{n-i})
\]

边界条件 \(B_0=\sum\limits_{i=0}^k\dfrac{A_0^i}{i!}\)

各种多项式操作的 n^2 递推的更多相关文章

  1. Luogu3824 [NOI2017]泳池 【多项式取模】【递推】【矩阵快速幂】

    题目分析: 用数论分块的思想,就会发现其实就是连续一段的长度$i$的高度不能超过$\lfloor \frac{k}{i} \rfloor$,然后我们会发现最长的非$0$一段不会超过$k$,所以我们可以 ...

  2. java中对于二位数组的简单操作,进而可以递推复杂操作

    1.程序 2.结果 3.内循环的次数 arr[x].length

  3. BZOJ4451 [Cerc2015]Frightful Formula 多项式 FFT 递推 组合数学

    原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列 ...

  4. 【XSY2730】Ball 多项式exp 多项式ln 多项式开根 常系数线性递推 DP

    题目大意 一行有\(n\)个球,现在将这些球分成\(k\) 组,每组可以有一个球或相邻两个球.一个球只能在至多一个组中(可以不在任何组中).求对于\(1\leq k\leq m\)的所有\(k\)分别 ...

  5. 【BZOJ4944】【NOI2017】泳池 概率DP 常系数线性递推 特征多项式 多项式取模

    题目大意 有一个\(1001\times n\)的的网格,每个格子有\(q\)的概率是安全的,\(1-q\)的概率是危险的. 定义一个矩形是合法的当且仅当: 这个矩形中每个格子都是安全的 必须紧贴网格 ...

  6. [JZOJ6088] [BZOJ5376] [loj #2463]【2018集训队互测Day 1】完美的旅行【线性递推】【多项式】【FWT】

    Description Solution 我们考虑将问题一步步拆解 第一步求出\(F_{S,i}\)表示一次旅行按位与的值为S,走了i步的方案数. 第二步答案是\(F_{S,i}\)的二维重复卷积,记 ...

  7. 利用Cayley-Hamilton theorem 优化矩阵线性递推

    平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方 ...

  8. 【瞎讲】 Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18)

    [背诵瞎讲] Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18) 看CSP看到一题"线性递推式",不会做,去问了问zsy怎么做,他并 ...

  9. 【BZOJ-4547】小奇的集合 矩阵乘法 + 递推

    4547: Hdu5171 小奇的集合 Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: 175  Solved: 85[Submit][Status][D ...

随机推荐

  1. docker内服务访问宿主机服务

    目录 1. 场景 2. 解决 4. 参考 1. 场景 使用windows, wsl2 进行日常开发测试工作. 但是wsl2经常会遇到网络问题.比如今天在测试一个项目,核心功能是将postgres 的数 ...

  2. python查询对像所有方法

    鉴于学习时好多参数对像都不知道是什么玩意有什么方法,搜了半天一个 """arg为一个对像,下面是打印所有对像方法"""for i, func ...

  3. Python pip 和pip3区别 联系

    python 有python2和python3的区别 那么pip也有pip和pip3的区别 大概是这样的 pip是python的包管理工具,pip和pip3版本不同,都位于Scripts\目录下: 如 ...

  4. oracle 修改表空间名

    1.登录使用sys用户登录 sqlplus sys/ as sysdba 2.修改表空间名字 SQL> alter tablespace 旧表空间名 rename to 新表空间名; 表空间已更 ...

  5. 『学了就忘』Linux基础命令 — 31、grep命令和通配符

    目录 1.grep命令介绍 2.find命令和grep命令的区别(重点) (1)find命令 (2)grep命令 3.通配符与正则表达式的区别 (1)通配符: (2)正则表达式: 1.grep命令介绍 ...

  6. C++ 指针的引用和指向引用的指针

    指向引用的指针 简单使用指针的一个例子就是: int a = 1; int *p = &a; 预先强调: 没有指向引用的指针 原因: 因为引用 不是对象,没有地址. 但是指向引用的指针是什么形 ...

  7. JVM启动参数详解

    JVM启动参数以及具体的解释: -Xmx1024M 最大堆内存 -Xms1024M 初始化堆内存,正常和最大堆内存相同,减少动态改变的内存损耗 -Xmn384M 年轻代内存 -XX:PermSize= ...

  8. 大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?

    "指针是C语言的灵魂"这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为....难,真难:下面说一下我对这句话的见解: C语言拥有着其他语言所没有的特性---直 ...

  9. cmd 命令 导出导入oracle数据库 的 表

    原地址:https://www.cnblogs.com/mysterious-killer/p/11671741.html (防止) 导出: 不要数据的:exp username/pwd@localh ...

  10. silky微服务框架的服务治理介绍

    目录 服务治理的概念 服务注册与发现 负载均衡 超时 故障转移(失败重试) 熔断保护(断路器) 限流 RPC限流 HTTP限流 1. 添加配置 2. 注册服务 3.启用 AspNetCoreRateL ...