基础篇戳这里

  大概是记录 @Tiw 的伟大智慧叭。

  嗷,附赠一个 全家桶题

Newton 迭代法

  解多项式方程

\[f(u,x)\equiv0\pmod{x^n}
\]

  其中 \(u\) 是一个多项式。


  用倍增的思想。设

\[u_n\equiv0\pmod{x^n}
\]

  现要求 \(u_{2n}\)。显然 \(u_{2n}\) 亦有 \(u_{2n}\equiv0\pmod{x^n}\),所以对于 \(k\in[2,+\infty)\cap\mathbb N\),有 \((u_{2n}-u_n)^k\equiv0\pmod{x^{2n}}\)。考虑在\(\bmod x^{2n}\) 意义下把 \(f(u_{2n},x)\) Tayler 展开,有

\[f(u_{2n},x)=\sum_{i=0}^{+\infty}\frac{f_{u}^{(i)}(u_n)}{i!}(u_{2n}-u_n)^i\equiv0\pmod{x^{2n}}
\]

  根据上文结论,得到:

\[f(u_{2n},x)=f(u_n,x)+f_u'(u_n,x)\cdot(u_{2n}-u_n)\equiv0\pmod{x^{2n}}
\]

  最终有

\[u_{2n}=u_n-\frac{f(u_n,x)}{f_u(u_n,x)}\pmod{x^{2n}}
\]

  附赠例题(密码 ltytxdy)。

多项式乱算

  该 来 的 还 是 来 了!

多项式求逆

  给定多项式 \(v\),求满足 \(uv\equiv1\pmod{x^n}\) 的 \(u\)。


  迭代思想。

\[\begin{cases}u_nv\equiv1\pmod{x^n}\\u_{2n}v\equiv1\pmod{x^{2n}}\end{cases}\\\Rightarrow~~~~(u_{2n}-u_n)^2\equiv0\pmod{x^{2n}}\\\Rightarrow~~~~u_{2n}^2-2u_{2n}u_n+u_n^2\equiv0\pmod{x^{2n}}\\\Rightarrow~~~~u_{2n}-2u_n+u_n^2v\equiv0\pmod{x^{2n}}\\\Rightarrow~~~~u_{2n}\equiv u_n(2-u_nv)\pmod{x^{2n}}
\]

  \(\mathcal O(n\log n)\) 计算即可。

多项式 \(\ln\)

  给定多项式 \(v\),保证 \(v_0=1\),求 \(u\equiv\ln v\pmod{x^n}\)。


  直接(?)法:

\[\begin{aligned}u&=\int v'\ln'v~\text dx\\&=\int\frac{v'}{v}\text dx\end{aligned}
\]

  对多项式求导和积分都是 \(\mathcal O(n)\) 的,所以求个逆就 \(\mathcal O(n\log n)\) 算出来啦。

多项式 \(\exp\)

  给定多项式 \(v\),保证 \(v_0=0\),求 \(u\equiv\exp v\pmod{x^n}\)。


  方便求导的家伙直接丢到牛迭里去。(

  解方程 \(f(u,x)=\ln(u)-v\equiv0\pmod{x^n}\),牛迭式:

\[u_{2n}\equiv u_n-\frac{\ln(u_n)-v}{\frac{1}{u_n}}=u_n(1-\ln(u_n)+v)\pmod{x^{2n}}
\]

  单次求 \(\ln\) 和卷积,还是 \(\mathcal O(n\log n)\)。

多项式开根

  给定多项式 \(v\),求 \(u\equiv v^{\frac{1}2}\pmod{x^n}\)。


  牛迭,解 \(f(u,x)=u^2-v\equiv0\pmod{x^n}\),有:

\[u_{2n}=u_n-\frac{u_n^2-v}{2u_n}=\frac{u_n^2+v}{2u_n}\pmod{x^{2n}}
\]

  单次卷积和求逆,复杂度 \(\mathcal O(n\log n)\)。

多项式带余除法

  给定多项式 \(u,v\),求 \(u\equiv vp+r\pmod{x^n}\),且 \(\deg r<\deg v\)。(\(\deg u\) 表示 \(u\) 的最高次。)


  考虑一个灵性的变换,对于任意多项式 \(u\),令其“翻转”多项式为 \(u_r\),有:

\[u_r=x^{\deg u}u(x^{-1})
\]

  显然翻转操作对于加法和卷积都是可分配的。

  把翻转作用于原式两边,得到:

\[u_r\equiv v_rp_r+x^{\deg u-\deg v+1}r_r\pmod{x^n}
\]

  又由于 \(\deg p_r=\deg u-\deg v\),所以把模数换成 \(x^{\deg u-\deg v+1}\),后一项直接模掉,求出来的还是 \(p_r\),即:

\[p_r\equiv\frac{u^r}{v^r}\pmod{x^{\deg u-\deg v+1}}
\]

  求出 \(p_r\),瞎算算就求到 \(p\) 和 \(r\) 了,复杂度还是 \(\mathcal O(n\log n)\)。

多项式快速幂

  给定多项式 \(v\) 和整数 \(k\),求 \(u=v^k\pmod{x^n}\)。


  假设我们能够对 \(v\) 求 \(\ln\),则左右同时 \(\ln\) 再 \(\exp\) 得到:

\[u=\exp(k\ln v)
\]

  \(\mathcal O(n\log n)\) 搞定。

  可惜有时候求不得,需要把 \(v_0\) 调整成 \(1\)。位移+系数提公因数即可。

多项式三角函数

  给定多项式 \(v\),求 \(u=\sin v\)(或 \(\cos v\) 等)。

  Euler 公式:

\[e^{ix}=\cos x+i\sin x
\]

  考虑对称性,也有:

\[e^{-ix}=\cos x-i\sin x
\]

  把多项式 \(v\) 代入,求出 \(e^{iv}\) 和 \(e^{-iv}\),就能直接解出 \(\sin v\) 和 \(\cos v\)。

  虚数单位 \(i\) 即 \(\omega_4^1\),用原根替代单位根即可。复杂度 \(\mathcal O(n\log n)\)。

常系数齐次线性递推

  Link.

  求一个满足 \(m\) 阶齐次线性递推数列 \(\{a\}\) 的第 \(n\) 项,即求

\[a_n=\sum_{i=1}^mf_ia_{n-i}
\]

  不用多项式取模的做法。

  根据条件式子得到:

\[A(x)=F(x)A(x)+P(x)
\]

  \(P(x)\) 某个多项式,用于修补低次项。

  变形:

\[\begin{aligned}A(x)&=F(x)A(x)+P(x)\\\Rightarrow~~~~A(x)&=\frac{P(x)}{Q(x)}~~~~\text{let } Q(x)=1-F(x)\\\Rightarrow~~~~A(x)&=\frac{P(x)Q(-x)}{Q(x)Q(-x)}\end{aligned}
\]

  对于任意奇数 \(k\),考虑 \(Q(x)Q(-x)\) 的 \(k\) 次项:

\[[x^k]Q(x)Q(-x)=\sum_{i=0}^k(-1)^iq_iq_{k-i}
\]

  由于 \(2\not|k\),故 \((-1)^iq_iq_{k-i}+(-1)^{k-i}q_{k-i}q_i=0\),原式为 \(0\),即 \(Q(x)Q(-x)\) 仅含偶次项。不妨令 \(R(x^2)=Q(x)Q(-x)\),代入变形:

\[\begin{aligned}A(x)&=\frac{P(x)Q(-x)}{R(x^2)}\\\Rightarrow A(x)&=\frac{E(x^2)}{R(x^2)}+x\frac{O(x^2)}{R(x^2)}~~~~\text{let }\begin{cases}E(x)=\sum_i [x^{2i}]P(x)Q(-x)\cdot x^i\\O(x)=\sum_i [x^{2i+1}]P(x)Q(-x)\cdot x^i\end{cases}\end{aligned}
\]

  我们要求的只是 \([x^n]A(x)\) 而非整个 \(A(x)\),所以只需要根据 \(n\) 的奇偶性递归到其中一边求解。复杂度仍然是 \(\mathcal O(m\log m\log n)\),不过常数会小很多。

  此算法基础上的更多卡常技巧请见 EI 的博客

Note - 多项式乱写的更多相关文章

  1. C语言--乱写C语言

    C语言的语法太枯燥了 换个写法   #include <stdio.h> #include<stdlib.h> #define end } #define if(x) if ( ...

  2. 工作日常-SQL不能乱写

    前言:刚接手别人的项目没多久,在昨天的一次上线中无故躺坑,且该大兄弟已经离职,不得不帮他填坑,整完后,今天想搞一个总结,结论就是:SQL不能乱写. 搜索关键词:Cause: java.sql.SQLE ...

  3. java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了

    总结:对象调用方法,与在main 里直接输出没什么大的区别,少用方法, 乱搞++++ package com.c2; import java.util.Scanner; public class DD ...

  4. 冲刺CSP-S集训考试反思+其它乱写(密码私信)

    RT.开坑. 10.1 开门黑23333. 放假回来稍困,而且感冒似乎愈加严重,导致我正常考试基本睁不开眼.一个小时勉强把题读懂,神志恍惚如斯. 看T2觉得估计又是各种推柿子堆定理的数学大题,写了个暴 ...

  5. 「题解」NOIP模拟测试题解乱写I(29-31)

    NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...

  6. NOI考前乱写

    还有13天NOI,把各种乱七八糟的算法都重新过一遍还是比较有必要的... //HDU 5046 Airport //DancingLink #include<iostream> #incl ...

  7. dp乱写1:状态压缩dp(状压dp)炮兵阵地

    https://www.luogu.org/problem/show?pid=2704 题意: 炮兵在地图上的摆放位子只能在平地('P') 炮兵可以攻击上下左右各两格的格子: 而高原('H')上炮兵能 ...

  8. 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》

    面试过好多人,包括自己也属于这么一个情况: 遇到问题直接去网上查,一般都可以查到解决方案.其中也包括一些基本的面试资料的答案. 其实有很多答案也都是正确的,但是还是存在一些压根就是胡乱抄来的答案,也不 ...

  9. 关于一道你们眼中的水题 Windy数 的乱写(数位dp)

    啊一道水题有什么好说的 上课听不懂,下课泪两行. 有的人什么套路都会,我.. 只能可怜巴巴的抄代码,然后自己总结,顺(zhu)便(yao)颓博客 1.递推dp的思路做到一半死了,怎么也想不出来如何处理 ...

随机推荐

  1. 使用jadx反编译 调试“XX值得买”APP获取接口签名key(一)

    闲来无事,想抓取一下"XX值得买"上排行榜的即时数据,按照通用方法 安装夜神模拟器 新增android 5.0版模拟器 安装xposed框架 安装JustTrustMe.apk 打 ...

  2. Ultimaker2+使用指南

    USB打印 使用最新的官方软件即可进行USB3D打印. 使用时在选项上进行预热以及x,y,z重新归零定位,每次开始都要做. SD卡打印 比较方便,因为电脑可能拿去做其他事情. 打印机堵塞 退出耗材时候 ...

  3. (3)ESP32 Python 制作一个办公室温度计

    因为经常在办公室里面不知道实际室内温度是多少,所以用ESP32做了一个工具来进行温度&湿度的监测.在之前的文章当中,已经完成了ESP32的数据上云工作,如果要进行温度/湿度的检测.从原理上就是 ...

  4. 集合框架-Map集合-LinkedHashMap及关联源码操作

    1 package cn.itcast.p9.linkedhashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator ...

  5. 磁盘sda,hda,sda1,并行,串行

    1.sd,hd表示硬盘, a表示第一块盘, 1表示硬盘上的第一个分区 2.sd是Serial ATA Disk ,表示硬盘是scsi,SATA串行接口 hd是 hard disk,表示硬盘是IDE(也 ...

  6. 数据库备份还原 mysqldump

    1.备份全部数据库的数据和结构mysqldump -uroot -p123456 --all-databases >all.bakmysqldump -uroot -p123456 -A > ...

  7. linux中yum本地私有仓库安装搭建《全面解析》

    目录 一:yum本地仓库安装 1.yum简介 2.yum安装解析 二:yum安装的生命周期 三:yum私有仓库作用与必要性 四:搭建yum私有仓库 本地版本 1.下载必须的软件包 2.创建软件仓库(就 ...

  8. python中True和False

    python中只有0代表False,只有1代表True,注意只有!! if x: print('True') 只要x是非零数值.非空字符串.非空list等,就判断为True,否则为False.

  9. Kubernetes常见的部署方案(十四)

    一.常见的部署方案 滚动更新 服务不会停止,但是整个pod会有新旧并存的情况. 重新创建 先停止旧的pod,然后再创建新的pod,这个过程服务是会间断的. 蓝绿 (无需停机,风险较小) 部署v1的应用 ...

  10. 新年好 takoyaki,期待再次与你相见

    一.序 今天是中国农历一年的最后一天,往年都叫年三十,今年没有三十,最后一天是二十九.厨房的柴火味.窗外的鞭炮声还有不远处传来的说笑声,一切都是熟悉味道,新年到了,家乡热闹起来了.平常左邻右舍都是看不 ...