Note - 多项式乱写
基础篇戳这里。
大概是记录 @Tiw 的伟大智慧叭。
嗷,附赠一个 全家桶题。
Newton 迭代法
解多项式方程
\]
其中 \(u\) 是一个多项式。
用倍增的思想。设
\]
现要求 \(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 展开,有
\]
根据上文结论,得到:
\]
最终有
\]
附赠例题(密码 ltytxdy)。
多项式乱算
该 来 的 还 是 来 了!
多项式求逆
给定多项式 \(v\),求满足 \(uv\equiv1\pmod{x^n}\) 的 \(u\)。
迭代思想。
\]
\(\mathcal O(n\log n)\) 计算即可。
多项式 \(\ln\)
给定多项式 \(v\),保证 \(v_0=1\),求 \(u\equiv\ln v\pmod{x^n}\)。
直接(?)法:
\]
对多项式求导和积分都是 \(\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}\),牛迭式:
\]
单次求 \(\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}\),有:
\]
单次卷积和求逆,复杂度 \(\mathcal O(n\log n)\)。
多项式带余除法
给定多项式 \(u,v\),求 \(u\equiv vp+r\pmod{x^n}\),且 \(\deg r<\deg v\)。(\(\deg u\) 表示 \(u\) 的最高次。)
考虑一个灵性的变换,对于任意多项式 \(u\),令其“翻转”多项式为 \(u_r\),有:
\]
显然翻转操作对于加法和卷积都是可分配的。
把翻转作用于原式两边,得到:
\]
又由于 \(\deg p_r=\deg u-\deg v\),所以把模数换成 \(x^{\deg u-\deg v+1}\),后一项直接模掉,求出来的还是 \(p_r\),即:
\]
求出 \(p_r\),瞎算算就求到 \(p\) 和 \(r\) 了,复杂度还是 \(\mathcal O(n\log n)\)。
多项式快速幂
给定多项式 \(v\) 和整数 \(k\),求 \(u=v^k\pmod{x^n}\)。
假设我们能够对 \(v\) 求 \(\ln\),则左右同时 \(\ln\) 再 \(\exp\) 得到:
\]
\(\mathcal O(n\log n)\) 搞定。
可惜有时候求不得,需要把 \(v_0\) 调整成 \(1\)。位移+系数提公因数即可。
多项式三角函数
给定多项式 \(v\),求 \(u=\sin v\)(或 \(\cos v\) 等)。
Euler 公式:
\]
考虑对称性,也有:
\]
把多项式 \(v\) 代入,求出 \(e^{iv}\) 和 \(e^{-iv}\),就能直接解出 \(\sin v\) 和 \(\cos v\)。
虚数单位 \(i\) 即 \(\omega_4^1\),用原根替代单位根即可。复杂度 \(\mathcal O(n\log n)\)。
常系数齐次线性递推
Link.
求一个满足 \(m\) 阶齐次线性递推数列 \(\{a\}\) 的第 \(n\) 项,即求
\]
不用多项式取模的做法。
根据条件式子得到:
\]
\(P(x)\) 某个多项式,用于修补低次项。
变形:
\]
对于任意奇数 \(k\),考虑 \(Q(x)Q(-x)\) 的 \(k\) 次项:
\]
由于 \(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)\),代入变形:
\]
我们要求的只是 \([x^n]A(x)\) 而非整个 \(A(x)\),所以只需要根据 \(n\) 的奇偶性递归到其中一边求解。复杂度仍然是 \(\mathcal O(m\log m\log n)\),不过常数会小很多。
此算法基础上的更多卡常技巧请见 EI 的博客。
Note - 多项式乱写的更多相关文章
- C语言--乱写C语言
C语言的语法太枯燥了 换个写法 #include <stdio.h> #include<stdlib.h> #define end } #define if(x) if ( ...
- 工作日常-SQL不能乱写
前言:刚接手别人的项目没多久,在昨天的一次上线中无故躺坑,且该大兄弟已经离职,不得不帮他填坑,整完后,今天想搞一个总结,结论就是:SQL不能乱写. 搜索关键词:Cause: java.sql.SQLE ...
- java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
总结:对象调用方法,与在main 里直接输出没什么大的区别,少用方法, 乱搞++++ package com.c2; import java.util.Scanner; public class DD ...
- 冲刺CSP-S集训考试反思+其它乱写(密码私信)
RT.开坑. 10.1 开门黑23333. 放假回来稍困,而且感冒似乎愈加严重,导致我正常考试基本睁不开眼.一个小时勉强把题读懂,神志恍惚如斯. 看T2觉得估计又是各种推柿子堆定理的数学大题,写了个暴 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
- NOI考前乱写
还有13天NOI,把各种乱七八糟的算法都重新过一遍还是比较有必要的... //HDU 5046 Airport //DancingLink #include<iostream> #incl ...
- dp乱写1:状态压缩dp(状压dp)炮兵阵地
https://www.luogu.org/problem/show?pid=2704 题意: 炮兵在地图上的摆放位子只能在平地('P') 炮兵可以攻击上下左右各两格的格子: 而高原('H')上炮兵能 ...
- 杜绝网上压根没测过就乱写之 《oracle mybatis 返回自增主键 》
面试过好多人,包括自己也属于这么一个情况: 遇到问题直接去网上查,一般都可以查到解决方案.其中也包括一些基本的面试资料的答案. 其实有很多答案也都是正确的,但是还是存在一些压根就是胡乱抄来的答案,也不 ...
- 关于一道你们眼中的水题 Windy数 的乱写(数位dp)
啊一道水题有什么好说的 上课听不懂,下课泪两行. 有的人什么套路都会,我.. 只能可怜巴巴的抄代码,然后自己总结,顺(zhu)便(yao)颓博客 1.递推dp的思路做到一半死了,怎么也想不出来如何处理 ...
随机推荐
- (随手记)Javascript 的parseInt函数,在IE和非IE内核浏览器运行的不同结果
一段JS小程序: var str = "09"; var itr = parseInt(str); alert(itr); IE下运行,alert(0); 火狐和chrome下运行 ...
- Leetcode系列之两数之和
Leetcode系列之两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,你 ...
- Servlet简单实现开发部署过程
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512008683445027331/ 主要是从下面三个步骤实现我们的预期: (1)构建开发环境: (2)开发Ser ...
- 基础概念(1):cc是什么
cc是什么? "人和程序,有一个能跑就行",意思是上班写代码,要么程序运行起来,要么人滚蛋.程序怎么才能运行起来呢?先要写出来,再编译成可执行的二进制,之后就可以跑起来了.这里重要 ...
- [C# 学习]委托和线程
委托有点像C语言的函数指针,简单总结一下如何使用委托. 1. 声明一个委托 public delegate void LabelSetEventHandler(Label la, string str ...
- C# 季节判断
编写一个控制台应用程序,可根据输入的月份判断所在季节. 代码如下 using System; using System.Collections.Generic; using System.Linq; ...
- 5.13-jsp分页功能实现
1.分页共能的实现 可以在dao层中创建方法 List<Member> pager(Long pageSize, Long pageNum);(方法灵活运用)其中传入的两个参数pageSi ...
- thinkpad s5 电源功率不足提示
相关答案 作者:路灯瓜 链接:https://www.zhihu.com/question/47551448/answer/122578101 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...
- gin访问和使用数据库
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysq ...
- gin框架中的同步异步
goroutine机制可以方便地实现异步处理 另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本 // 异步 func longAsync(context *gin.Co ...