码迷,mamicode.com
首页 > 其他好文 > 详细

多项式中步

时间:2020-01-31 16:11:34      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:推出   rac   ceil   很多   递归   一个   快速幂   公式   less   

因为快要WC了所以学一下多项式全家桶,不过国赛大概率是不会考这么难的

因为比初步难所以叫多项式中步

然而好像并不会有多项式高步

基础概念与前置知识

基础概念

只是介绍一下符号和概念

假设\(f(x)\)是一个多项式
\([x^i]f(x)\)表示\(f(x)\)的第i项(也就是\(x\)的系数为\(i\)的那一项)

\(f(x)\mod x^n\)相当于是将次数大于等于n的项移除

多项式除法

对于两个多项式,存在唯一的多项式\(Q(x),R(x)\)
\[f(x)=Q(x)g(x)+R(x)\]
\[deg(Q)=deg(f)-deg(g)\]
\[deg(R)\lessdot deg(g)\]
可以类比初中的除法

多项式求导

前置知识求导
我博客里曾经有过,但是它咕了

由简单的求导公式和导数运算律
我们可以知道对于一个多项式
\[f(x)=\sum\limits_{i=0}^{n}a_ix^i\]
\[f'(x)=\sum\limits_{i=0}^{n-1}(i+1)a_{i+1}x^i\]
积分是求导的逆运算
对于一个导数
\[f'(x)=\sum\limits_{i=0}^{n}a_ix^i\]
\[f(x)=\sum\limits_{i=0}^{n}\frac{a_{i}}{i+1}x^{i+1}\]

全家桶

开个一亿的桶
--zwj1

多项式求逆

只会倍增法

\(f^{-1}(x)\mod x^n\)

从小往大推

\[f^{-1}(x)\equiv([x^0]f(x))-1\pmod {x}\]
递归边界就是最后等于常数项的逆元

假设已经知道了\(\mod x^{\lceil\frac{n}{2}\rceil}\)的逆元\(g(x)\)
然后递推出\(\mod x^{n}\)的逆元\(h(x)\)(这样记只是为了不写上标)

\[f(x)g(x)\equiv 1\pmod{x^{\lceil\frac{n}{2}\rceil}}\]
\[f(x)g(x)-1\equiv 0\pmod{x^{\lceil\frac{n}{2}\rceil}}\]

因为右边的值为0,所以此时两边平方之后会变成\(\pmod{x^{n}}\)

\[(f(x)g(x)-1)^2\equiv 0\pmod{x^n}\]
\[f^2(x)g^2(x)-2f(x)g(x)+1=0\pmod{x^n}\]
\[1=2f(x)g(x)-f^2(x)g^2(x)\pmod{x^n}\]
两边同除\(f(x)\)
\[h(x)=2g(x)-f(x)g^2(x)\pmod{x^n}\]
提出一个\(g(x)\)
\[h(x)=g(x)(2-f(x)g(x))\pmod{x^n}\]
递归就完了
虽然做了很多次NTT,但是时间复杂度是\(n\log n\)

多项式除法

咕咕咕

多项式牛顿迭代

\(g(f(x))\equiv0\pmod{x^n}\)
假设已经得到了\(\mod \lceil\frac{n}{2}\rceil\)的答案\(f_0(x)\)
将这个函数在\(f_0(x)\)处泰勒展开
\[\sum\limits_{i=0}^{\infin}\frac{g^{(i)}(f_0(x))}{i!}(f(x)-f_0(x))^i\equiv0\pmod{x^n}\]
易知
\(f(x)-f_0(x)\)的后\(\lceil\frac{n}{2}\rceil\)\(0\),所以二次及以上的系数全为\(0\)
那后面就都没了
\[g(f_0(x))+g'(f_0(x))(f(x)-f_0(x))\equiv0\pmod{x^n}\]
\[f(x)\equiv f_0(x)-\frac{g(f_0(x))}{g'(f_0(x))}\pmod{x^n}\]
大概是因为这个式子长得很像牛顿迭代所以叫他多项式牛顿迭代
具体应用见多项式\(exp\)和多项式开方

多项式ln(多项式对数函数)

\(\ln f(x)\pmod{x^n}\)
设所求为\(g(x)\)
\[g(x)=\ln f(x)\pmod{x^n}\]
对两边求导
\[g'(x)=\ln'(f(x))f'(x)\pmod{x^n}\]
\[已知ln'x=\frac{1}{x}\]
\[g'(x)=\frac{f'(x)}{f(x)}\pmod{x^n}\]
求个逆就完了
因为多项式求逆是\(O(nlogn)\)的,所以它也是\(O(nlogn)\)

多项式exp(多项式指数函数)

用多项式牛顿迭代
\(f(x)\equiv e^{a(x)}\pmod{x^n}\)
\[\ln f(x)\equiv a(x)\pmod{x^n}\]
\[\ln f(x)-a(x)\equiv 0\pmod{x^n}\]
\[g(f(x))=\ln f(x)-a(x)\]
\[g'(f(x))=\frac{1}{f(x)}\]
(这里把\(f(x)\)看做参数,\(a(x)\)看做常数)

带入牛顿迭代的式子
\[f(x)=f_0(x)-f_0(x)(\ln f_0(x)-a(x))\pmod{x^n}\]
\[f(x)=f_0(x)(1-\ln f_0(x)+a(x))\pmod{x^n}\]
因为多项式\(ln\)\(O(nlogn)\)的,所以它还是\(O(nlogn)\)的(迫真)

多项式快速幂

低级做法
直接快速幂
时间复杂度\(O(n\log n\log k)\)
先求\(\ln\)再乘\(k\)再求\(exp\)
时间复杂度\(O(n\log n)\)

好像这样可以实现\(O(1)\)快速幂QAQ

多项式开方

就是对于一个\(f(x)\),求一个\(g(x)\)
使得\(g^2(x)=f(x)\pmod{x^n}\)

倍增法

和多项式求逆一样的颓法

边界一样(因为板子保证了\([x^0]a(x)=1\)所以不用写二次剩余)

牛顿迭代法


\[f(x)\equiv\sqrt{a(x)}\pmod{x^n}\]
\[f^2(x)\equiv a(x)\pmod{x^n}\]
\[f^2(x)-a(x)\equiv 0\pmod{x^n}\]
\[g(f(x))=f^2(x)-a(x)\]
\[g'(f(x))=2f(x)\]
\[f(x)\equiv f_0(x)-\frac{f_0^2(x)-a(x)}{2f_0(x)}\pmod{x^n}\]

迫真\(n\log n\)

用多项式快速幂求\(a(x)^{\frac{1}{2}}\)

多项式多点求值

多项式快速插值

多项式中步

标签:推出   rac   ceil   很多   递归   一个   快速幂   公式   less   

原文地址:https://www.cnblogs.com/oiertkj/p/12245454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!