拆系数FFT】的更多相关文章

学习内容:国家集训队2016论文 - 再谈快速傅里叶变换 模板题:http://uoj.ac/problem/34 1.基本介绍 对长度为L的\(A(x),B(x)\)进行DFT,可以利用 \[ \begin{align} P(x)=A(x)+iB(x) \tag{1} \\ Q(x)=A(x)-iB(x) \tag{2} \end{align} \] 对\(P(x)\)进行DFT,得到\(F_p\). \(Q(x)\)的结果 DFT\(F_q[k]=!(F_p[2L-k])\),(!表示取共轭…
模拟考某题一开始由于校内OJ太慢直接拆系数FFT跑不过 后来被神仙婊了一顿之后发现复杂度写炸了改了改随便过 模版题:任意模数NTT 三模数NTT 常数巨大,跑的极慢 拆系数FFT 原理是对于两个多项式$ P=\sum\limits_{i=0}^{n-1}P_ix^i \ \ Q=\sum\limits_{i=0}^{m-1}Q_ix^i$ 直接$ FFT$计算会发现值域达到$ 10^{23}$会炸精度 设 $ A=\sum\limits_{i=0}^{n-1}(P_i>>15)x^i \ \…
拆系数FFT 对于任意模数 \(mod\) 设\(m=\sqrt {mod}\) 把多项式\(A(x)\)和\(B(x)\)的系数都拆成\(a\times m+b\)的形式,时\(a, b\)都小于\(m\) 提出,那么一个多项式就可以拆成两个多项式的加法 一个是\(a*m\)的,一个是\(b\)的 直接乘法分配律,\(aa\)一遍,\(ab\)一遍,\(ba\),\(bb\)一遍,四遍\(FFT\) 乘出来不会超过取模范围 然后合并直接 \[(a\times m+b)(c\times m+d)…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 可以用分治FFT.但自己只写了多项式求逆. 和COGS2259几乎很像.设A(x),指数是长度,系数是方案. \( A(x)^{k} \) 的 m 次项系数表示 k 个连续段组成长度为 m 的序列的方案数. \( B(x)=1+F(x)+F^{2}(x)+F^{3}(x)+... \) \( B(x) = \frac{1}{1-F(x)} \)(通过计算B(x)的逆来看出这个式子) 然后多项式求逆…
题目:https://www.luogu.org/problemnew/show/P4245 三模数NTT: 大概是用3个模数分别做一遍,用中国剩余定理合并. 前两个合并起来变成一个 long long 的模数,再要和第三个合并的话就爆 long long ,所以可以用一种让两个模数的乘积不出现的方法:https://blog.csdn.net/qq_35950004/article/details/79477797 x*m1+a1 = -y*m2 + a2  <==>  x*m1+y*m2…
题目:https://www.luogu.org/problemnew/show/P4245 用三模数NTT做,需要注意时间和细节: 注意各种地方要取模!传入 upt() 里面的数一定要不超过2倍 mod! 乘法会爆 long long 时用快速乘! 两次合并的模数,第一次是 (ll) p1*p2,第二次直接对题目的模数取模即可! 注意局部开 (ll)! 合并时用到的逆元每次都一样,所以要先处理好而不是现场快速幂算!! 然而为什么时间还是 Narh 的两倍! 一晚上的心血... 代码如下: #i…
题意:两个人van石头剪子布的游戏一共n盘,假设A赢了a盘,B赢了b盘,那么得分是gcd(a,b),求得分的期望*\(3^{2*n}\) 题解:根据题意很明显有\(ans=3^{n}*\sum_{a=0}^{n}\sum_{b=0}^{n-a}gcd(a,b)C(n,a)C(n-a,b)\) \(ans=\sum_{d=1}^nd\sum_{a=0}^n\sum_{b=0}^{n-a}[gcd(a,b)==d]C(n,a)C(n-a,b)\) 假设\(f(d)=\sum_{a=0}^n\sum_…
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #define rin(i,a,b) for(int i=(a);i<=(b);i++) #define rec(i,a,b) for(int i=(a);…
1258 序列求和 V4 题意:求\(S_m(n) = \sum_{i=1}^n i^m \mod 10^9+7\),多组数据,\(T \le 500, n \le 10^{18}, k \le 50000\) 等幂求和 多项式求逆元\(O(mlogm)\)预处理伯努利数,然后可以\(O(m)\)回答 因为是任意模数,所以要用拆系数fft 拆系数fft+多项式求逆元,写的爽死了 具体内容可能会写学习笔记 注意: 多项式求逆元里拆系数,不能只更新 .x= ,这样的话y还保留以前的值就错了 因为使用…
hdu 4656 Evaluation 题意:给出\(n,b,c,d,f(x) = \sum_{i=1}^{n-1} a_ix^i\),求\(f(b\cdot c^{2k}+d):0\le k < n\) 取模\(10^6+3\) 昨天刚看过<具体数学>上求和一章 代入\(b\cdot c^{2k}+d\)然后展开,交换求和顺序,得到 \[ f(k) = \sum_{j=0}^n \frac{b^j c^{2kj}}{j!} \sum_{i=j}^n a_i i! \frac{d^{i-…
hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治fft 注意过程中把r-l+1当做次数界就可以了,因为其中一个向量是[l,mid],我们只需要[mid+1,r]的结果. 多项式求逆 变成了 \[ A(x) = \frac{f_0}{1-B(x)} \] 的形式 要用拆系数fft,直接把之前的代码复制上就可以啦 #include <iostream…
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/例题与常用套路[入门] 前置技能 对复数以及复平面有一定的了解 对数论要求了解:逆元,原根,中国剩余定理 对分治有充足的认识 对多项式有一定的认识,并会写 $O(n^2)$ 的高精度乘法 本文概要 多项式定义及基本卷积形式 $Karatsuba$ 乘法 多项式的系数表示与点值表示,以及拉格朗日插值法…
原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列,其余的数通过如下公式推出: $$f_{i,j}=a\cdot f_{i,j-1}+b\cdot f_{i-1,j}+c$$ 求$f_{n,n}\mod (10^6+3)$. 题解 利用$FFT$来解决此题 真是一道好题只是我太菜了.光$FFT$就调了好久.当然本题可以直接递推(将写在用$FFT$实…
最近重新学了下卷积,简单总结一下,不涉及细节内容: 1.FFT 朴素求法:$Coefficient-O(n^2)-CoefficientResult$ FFT:$Coefficient-O(nlogn)-Dot-O(n)-DotResult-O(nlogn)-CoefficientResult$ 其中系数到点值的转化称为$DFT(离散傅里叶变换)$,而点值到系数的转为称为$IDFT(傅里叶逆变换)$ 原本朴素的直接带入$n$个值的$DFT$和直接使用拉格朗日插值公式的$IDFT$的复杂度仍为$O…
本来一直都是写\(7\)次的\(MTT\)的--然后被\(shadowice\)巨巨调教了一通之后只好去学一下\(4\)次的了-- 简单来说就是我们现在需要处理一类模数不为\(NTT\)模数的情况 这里是板子 三模\(NTT\) 跑的很慢而且我也不会,这里就不说了 拆系数\(FFT\) 两个多项式\(P(z),Q(z)\),我们把它们的系数拆成 \[A(z)=\sum_{i=0}^\infty (P_i>>15)z^i,B(z)=\sum_{i=0}^\infty (P_i\&3276…
目录 参考资料 FFT 吹水 例题 普通做法 更高大尚的做法 定义与一部分性质 系数表达式 点值表达式 点值相乘??? 卷积 复数 单位根 DFT IDFT 蝴蝶迭代优化 单位根求法 实现.细节与小优化 细节 小优化 实现 超~毒瘤优化. 实战! First Second 温馨插入:生成函数 Third 总所周知,FFT是一个非常麻烦的算法,再加上博主语文不好,便写起来有点麻烦,但会尽力去写.要以后自己看不懂就... 注:因为最近的压力紧张,便没有继续学习FFT,这仅为目前的半成品以及一些目前已…
1.多项式的两种表示法 1.系数表示法 我们最常用的多项式表示法就是系数表示法,一个次数界为\(n\)的多项式\(S(x)\)可以用一个向量\(s=(s_0,s_1,s_2,\cdots,s_n-1)\)系数表示如下:\[S(x)=\sum_{k=0}^{n-1}s_kx^k\] 系数表示法很适合做加法,可以在\(O(n)\)的时间复杂度内完成,表达式为:\[S(x)=A(x)+B(x)=\sum_{k=0}^{n-1}(a_k+b_k)x^k\] 当中\[s_k=a_k+b_k\] 但是,系数…
题面 题解 幸好咱不是在晚上做的否则咱就不用睡觉了--都什么年代了居然还会出高精的题-- 先考虑如果暴力怎么做,令\(G(x)\)为\(F(n,k)\)的生成函数,那么不难发现\[G^R(x)=\prod_{i=1}^n(x+i)\] 也就是说如果把\(G(x)\)的系数反过来就是后面那个东西,所以对于\(n\leq 100000\)的数据直接分治\(FFT\)就行了.不过因为这里的模数不一定满足原根性质,所以要用三模数\(NTT\)或拆系数\(FFT\)(所以咱为了这题还特地去学了一下拆系数-…
NTT&FFT 预先知识:无 我觉得我们可以从NTT/FFT讲起? 两个其实本质相同,都是求 多项式乘积 的算法 FFT \((x,y)\)指复数,我们可以不用管它 首先我们构造单位根\(\omega_n\)=\((cos(2\pi/n),sin(2\pi/n))\) 而\((\omega _n)^i=(cos(2\pi/n\cdot i),sin(2\pi/n\cdot i))\) 伟大的数学家们告诉我们\((\omega_n)^n=1\) 也就是说\(\omega_n\)实际上是一个\(n\…
任意长度卷积 CZT 就是一波推导 \[ \begin{aligned} b_i &= \sum_{j=0}^{n-1} \omega^{ij}a_j \\ &= \sum_{j=0}^{n-1} \omega^{\frac{i^2+j^2-(i-j)^2}{2}}a_j \\ &= \omega^{\frac{i^2}{2}} \sum_{j=0}^{n-1}\omega^{\frac{-(i-j)^2}{2}} a_j \omega^{j^2} \end {aligned} \…
任意模数FFT 这是一个神奇的魔法,但是和往常一样,在这之前,先 \(\texttt{orz}\ \color{orange}{\texttt{matthew99}}\) 问题描述 给定 2 个多项式 \(F(x), G(x)\) ,请求出 \(F(x) * G(x)\). 系数对 p 取模,\(2 \le p \le 10^9+9\) 拆系数FFT 我们考虑令\(M\)为\(\sqrt{p}\),那么我们可以将原本的多项式拆成4个. \(F(x)=A(x)*M+B(x)\) \(G(X)=C(…
目录 @0 - 参考资料@ @1 - 一些概念@ @2 - 傅里叶正变换@ @3 - 傅里叶逆变换@ @4 - 迭代实现 FFT@ @5 - 参考代码实现@ @6 - 快速数论变换 NTT@ @7 - 任意模数 NTT@ @三模数 NTT@ @拆系数 fft (mtt)@ @8 - 例题与应用@ @分治 FFT@ @多维卷积@ @循环卷积@ @多项式求逆,除法与取模@ @多点求值与快速插值@ @多项式开方,对数,指数,三角与幂函数@ @0 - 参考资料@ Miskcoo's Space 的讲解…
目录 「学习笔记」FFT 之优化--NTT 前言 引入 快速数论变换--NTT 一些引申问题及解决方法 三模数 NTT 拆系数 FFT (MTT) 「学习笔记」FFT 之优化--NTT 前言 \(NTT\) 在某种意义上说,应该属于 \(FFT\) 的一种优化. --因而必备知识肯定要有 \(FFT\) 啦... 如果不知道 \(FFT\) 的大佬可以走这里 引入 在 \(FFT\) 中,为了能计算单位原根 \(\omega\) ,我们使用了 \(\text{C++}\) 的 math 库中的…
就多项式乘法这个地方不太熟 再多巩固一下. LINK:[ZJOI2014力](https://www.luogu.com.cn/problem/P3338) 把$(j-i)^2$看成一个函数 可以发现是一个卷积 FFT优化即可. LINK:[TJOI2017DNA](https://www.luogu.com.cn/problem/P3763) 这道题还是FFT匹配字符串的应用,怎么匹配我不再赘述 其实就是翻转一下相乘一下... 考虑怎么求答案 可以最多有三个位置不同 我们很难处理这个问题..…
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 写在前面 一些约定 循环卷积 DFT卷积的本质 Bluestein's Algorithm 例题 分治FFT 例题 FFT的弱常数优化 复杂算式中减少FFT次数 例题 利用循环卷积 小范围暴力 例题 快速幂乘法次数的优化 FFT的强常数优化 DF…
  进阶篇戳这里. 目录 何为「多项式」 基本概念 系数表示法 & 点值表示法 傅里叶(Fourier)变换 概述 前置知识 - 复数 单位根 快速傅里叶正变换(FFT) 快速傅里叶逆变换(IFFT) 迭代实现 例题 「洛谷 P3803」「模板」多项式乘法(FFT) 题意简述 数据规模 快速数论变换(NTT) 原根 实现 NTT 模数 奇怪的模数 - 任意模数 NTT 三模 NTT 拆系数 FFT(MTT) 七次转五次 五次转四次 例题 「洛谷 P4245」「模板」任意模数 NTT 题意简述 数…
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. 偶尔也会打一些比赛找找手感(比如HHHOJ的比赛,Luogu比赛,以及comet OJ上之前的CCPC题) CF和CC看情况,主要是我真的不太喜欢读英文题的恐怖感觉233 希望这段时间的努力可以让我不跪省选吧 2-26 早上晨跑完了就和杨浩讲了停课的事,不出意外地很轻松就通过了. 然后回班拿了点东…
代码比较长所以直接去LOJ看吧- 鱼(计算几何.向量) 比较套路的内容:枚举\(D\),对于其他所有点按照\(D\)极角排序,按照极角序枚举\(A\),这样垂直于\(AD\)的线也会以极角序旋转,可以使用双指针+map的方式维护合法的\(EF\)点对数量. 相对麻烦的是如何对于每个\(AD\)找到合法的\(BC\)的数量.注意到\(BC\)的限制条件很强,要求\(AD\)是\(BC\)的中垂线,且\(BC\)与直线\(AD\)的交点在线段\(AD\)上. 故预处理所有可能的\(BC\),设\(B…
模拟赛的题 好神仙啊 题面在这里 之前的Solution很蠢 现在已经update.... 题意 有$ n$个商品价格均为$ 1$,您有$ m$种面值的货币,面值为$ C_1..C_m$ 每种物品你有$ P$的概率选取,然后你需要选出若干货币购买这些物品 购买商品不存在找零,求浪费在找零上的钱的期望对$ 1e9+7$取模 $ n \leq 10^9 \ m \leq 10^2 \ C_iC_j \leq 10^4$ $Solution $ 垃圾模数毁我青春 首先考虑$ m=1$怎么做 枚举购买的…
原文链接https://www.cnblogs.com/zhouzhendong/p/HDU2449.html 题目传送门 - HDU2449 题意 高精度高斯消元. 输入 $n$ 个 $n$ 元方程. $n\leq 100$ 注:本题对输入数值大小貌似没有说明限制. 题解 高精度高斯消元啊,去写.去写.写写写写写写写写写写写写写写写写写写!! 然后就可以写出来了. 下面讲故事. 那是 2017 年 7 月. 呀!高精度高斯消元裸题! 当时还不会 FFT . 去年暑假花了一个星期的零碎时间搞了一…