FFT
文章平均质量分 67
Freopen
这个作者很懒,什么都没留下…
展开
-
多项式题单
LOJ #556. 「Antileaf’s Round」咱们去烧菜吧求混合背包(某一体积的物品可能有无限个也可能有有限个),得到体积和为1...n1...n1...n的方案数。热身题。如果一个体积为vvv的物品有无限个,那么其关于体积的普通生成函数为∑i=0xvi=11−xv\sum_{i=0}x^{vi} = \frac 1{1-x^v}∑i=0xvi=1−xv1如果一个体积为vvv的物品有KKK个,那么其关于体积的普通生成函数为∑i=0Kxvi=1−xv(K+1)1−xv\sum_{i=0}原创 2020-06-30 15:33:00 · 703 阅读 · 1 评论 -
CF1349F Slime and Sequences (欧拉数,扩展拉格朗日反演)
这篇博客大部分抄自此人好序列为对于一个长度为nnn的序列,其中若有ai=k(k>1)a_i= k(k>1)ai=k(k>1),则必存在aj∈[1,i−1]=k−1a_{j\in[1,i-1]} = k-1aj∈[1,i−1]=k−1求对于所有长度为nnn的好序列,分别求出k=1...nk = 1...nk=1...n的出现次数和。第一步神仙映射:把所有的好序列映射到排列中,发现可以一一对应。对应方法如下:排列到好序列:对于一个排列pip_ipi,如果p1,p2...pi原创 2020-05-27 11:55:34 · 685 阅读 · 3 评论 -
「余姚中学 2019 联测 Day 2」Under Pressure(多项式类欧几里得,DFT)
对于第www位,我们实际上是要求一个多项式:∑i=0Ax⌊Bi+Ckw⌋\sum_{i=0}^A x^{\left\lfloor \frac {Bi+C}{\small {k^w}} \right\rfloor}i=0∑Ax⌊kwBi+C⌋我们知道类欧几里得实际上很多时候是需要转化为二维直线下的所有点的点权和。这个题也可以这样转化:原式=(∑i=0A∑j=0⌊Bi+Ckw⌋xj)(x−1)+A+1x\frac {(\sum_{i=0}^A \sum_{j=0}^{\left\lfloor \.原创 2020-05-22 22:31:30 · 328 阅读 · 0 评论 -
LOJ #6496. 「雅礼集训 2018 Day1」仙人掌(分治FFT,仙人掌DP)
题目没什么好说的。考虑树,分治FFT即可。上环,环上每个除了父亲的点求出方案数后枚举与父亲相连的两条边的方向后O(len)dpO(len)dpO(len)dp求方案数即可。AC Code\mathcal AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 300005#define mod 998244353using namespace std;char cb[1<<16],*cs=cb,*原创 2020-05-22 21:59:08 · 385 阅读 · 1 评论 -
Codechef Devu and Locks(FFT)
枚举10a mod P10^a\bmod P10amodP的值,求出有多少aaa满足条件。然后就是愉快的FFTFFTFFT了。AC Code\mathcal AC \ CodeAC Code#include<bits/stdc++.h>#define maxn 40005#define mod 998244353#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)#define per(i,j,k) fo原创 2020-05-19 15:58:33 · 191 阅读 · 0 评论 -
多项式快速插值
拉格朗日+洛必达套餐。卡常可以尝试小范围时暴力多点求值,效果超好AC Code\mathrm{AC \ Code}AC Code#include<bits/stdc++.h>#define maxn 300005#define mod 998244353#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;...原创 2020-01-03 12:29:59 · 277 阅读 · 0 评论 -
【模板】普通多项式转下降幂多项式
题目下降幂多项式×ex\times e^x×ex就是其点值多项式的EGFEGFEGF。所以多点求值后乘e−xe^{-x}e−x即可。AC Code\mathrm{AC \ Code}AC Code#include<bits/stdc++.h>#define maxn 300005#define mod 998244353#define rep(i,j,...原创 2020-01-02 22:11:02 · 586 阅读 · 0 评论 -
多项式的各种算法\cdot极
极\cdot多项式假之前的一篇感觉太不系统了。这次将用链套链的方式写好这些博文造好这些轮子。0.前置知识:0.1 极限0.2 生成函数1.FFT\mathrm {FFT}FFT2.NTT\mathrm {NTT}NTT3.MTT暂且跳过。4.多项式求逆5.多项式对数函数6.多项式指数函数7.多项式开根8.多项式快速幂9.多项式除法10....原创 2019-12-22 17:04:08 · 2919 阅读 · 0 评论 -
多项式多点求值
给定一个nnn次多项式f(x)f(x)f(x),现在请你对于 i∈[1,m]i\in [1,m]i∈[1,m] ,求出 f(ai)(mod998244353)f(a_i)\pmod {998244353}f(ai)(mod998244353)。好像有一个啥定理:f(ai)=f(x)mod (x−ai)f(a_i) = f(x) \mod (x-a_i)f(ai)=f(x)mod(x−ai...原创 2019-12-22 17:03:27 · 340 阅读 · 0 评论 -
多项式除法
已知A(x),B(x)A(x),B(x)A(x),B(x),求A(x)=B(x)C(x)+R(x)A(x) = B(x)C(x)+R(x)A(x)=B(x)C(x)+R(x)且degR<degB\deg R < \deg BdegR<degBdegf(x)\deg f(x)degf(x)为f(x)f(x)f(x)的最高次数。...原创 2019-12-21 17:18:10 · 436 阅读 · 0 评论 -
多项式快速幂
已知f(x)f(x)f(x),求g(x)=f(x)k(modxn)g(x) = f(x)^k\pmod{x^n}g(x)=f(x)k(modxn)版本1:1:1:qk≤1e6qk\leq1e6qk≤1e6,其中qqq是f(x)f(x)f(x)的最高次数。将f(x)f(x)f(x)FFTFFTFFT后直接对每个点值求kkk次方后再IDFTIDFTIDFT回去即可。非常快,不要小看了这种做法。...原创 2019-12-21 09:50:09 · 1525 阅读 · 5 评论 -
多项式开根
已知f(x)f(x)f(x),求g(x)=f(x)12(modxn)g(x) = f(x)^{\frac 12} \pmod{x^n}g(x)=f(x)21(modxn)保证常数项为111算法111:g(x)=exp(lnf(x)2)g(x) = \exp(\frac {\ln f(x)}2)g(x)=exp(2lnf(x))O(nlogn)O(n\log n)O(nlogn)算法...原创 2019-12-20 22:41:49 · 405 阅读 · 0 评论 -
多项式指数函数
已知f(x)f(x)f(x),求g(x)=exp(f(x))(modxn)g(x) = \exp(f(x)) \pmod{x^n}g(x)=exp(f(x))(modxn)lng(x)−f(x)=0\ln g(x) - f(x) = 0lng(x)−f(x)=0直接牛顿迭代g1(x)=g0(x)−lng0(x)−f(x)1g0(x)g_1(x) = g_0(x) - \frac{\ln...原创 2019-12-20 22:22:28 · 547 阅读 · 0 评论 -
多项式对数函数
已知f(x)f(x)f(x),求g(x)=lnf(x)(modxn)g(x) = \ln f(x) \pmod {x^n}g(x)=lnf(x)(modxn)保证常数项为111g(x)′=f(x)′f(x)g(x)' = \frac {f(x)'}{f(x)}g(x)′=f(x)f(x)′g(x)=∫f(x)′f(x)g(x)=\int \frac{f(x)'}{f(x)}g(x)=∫f...原创 2019-12-20 21:58:07 · 292 阅读 · 0 评论 -
多项式求逆
求B(x)B(x)B(x)使A(x)B(x)=1(modxn)A(x)B(x) = 1 \pmod {x^n}A(x)B(x)=1(modxn)即A(x)−1B(x)=0(modxn)A(x)-\frac 1{B(x)}=0 \pmod{x^n}A(x)−B(x)1=0(modxn)直接牛顿迭代即可。B1(x)=B0(x)−A(x)−1B0(x)(A(x)−1B(x))′∣B(x)=B0(...原创 2019-12-20 21:37:32 · 298 阅读 · 0 评论 -
快速数论变换(NTT)
其实对于看了FFT的人来说,也没有什么好讲的。对于没有看过FFT的人来说,讲的内容和FFT也没什么两样。所以就直接上板子吧。#include<bits/stdc++.h>#define maxn 3000005#define mod 998244353#define rep(i,j,k) for(int i=(j);i<=(k);i++)#define per(i,...原创 2019-12-20 21:07:17 · 509 阅读 · 0 评论 -
BZOJ 3451 Tyvj1953 Normal(点分治+FFT)
题目题解:这个概率统计神了。考虑在以iii为根的点分区域内(即我下一步将要选出来分治的点是iii时的树),jjj被计算到贡献的概率。那么这个概率等于(i,j)(i,j)(i,j)的路径上iii是第一个被选出来当分治中心的点的概率。在这之前路径上的点都没有被选,最后一次选出iii的那次,路径上的点都在同一个点分区域内。那么路径上的点被选到的概率都一样,所以我们要求的概率就是1dis(i,...原创 2019-09-14 16:12:43 · 170 阅读 · 0 评论 -
生成函数
1.普通生成函数OGF\texttt{OGF}OGF对于无顺序的计数f(x)=∑i=0aixif(x) = \sum_{i=0} a_ix^if(x)=i=0∑aixi这里的xxx是形式幂级数,我们不关心xxx的具体取值,我们只关心系数,可以通过复分析证明可以无视收敛条件化简:∑i=0xi=11−x\sum_{i=0} x^i = \frac 1{1-x}∑i=0xi=1−x1Ex...原创 2019-12-21 15:15:50 · 318 阅读 · 0 评论 -
下降幂与多项式乘法
下降幂指数生成函数:f(x)=∑i=0aii!xi‾f(x) = \sum_{i=0}\frac {a_i}{i!} x^{\underline i}f(x)=∑i=0i!aixi指数生成函数:f2(x)=∑i=0aii!xif_2(x) = \sum_{i=0}\frac {a_i}{i!} x^{i}f2(x)=∑i=0i!aixi对于f(x)f(x)f(x)的点值指数生成...原创 2019-07-11 21:07:55 · 2747 阅读 · 0 评论 -
第二类斯特林数:列
代码和 “第一类斯特林数:列” 极为相似(具体数学:第一类斯特林数的三角形往负数走就是第二类斯特林数)设Sk(x)=∑i=0{ik}xii!S_k(x) = \sum_{i=0} \begin{Bmatrix} i \\ k\end{Bmatrix}\frac {x^i}{i!}Sk(x)=∑i=0{ik}i!xi易得:Sk(x)=kxSk(x)+Sk−1(x)S_k(x) = kx...原创 2019-07-12 19:40:24 · 516 阅读 · 0 评论 -
Codeforces 1103 E. Radix sum(多维傅里叶变换,循环卷积)
题目可以去这篇博客看题意顺便了解一下基本理论基本理论看完基本理论之后就全是细节问题了。1.有n次单位根可以DFT后做长度为n的循环卷积。2.多维的把单位根乘起来就行。3.没有n次单位根?复数精度不够,模意义下,模数居然是个2582^{58}258如此不友善,那么有一个通法:(modxn−1)\pmod{x^n-1}(modxn−1)的意义下的多项式,nnn次单位根为xxx,这个。。。...原创 2019-05-17 15:30:52 · 587 阅读 · 0 评论 -
多项式卷积与DFT与FFT
之所以取这个标题。。。是因为我自己以前只认为FFT只是一种精妙的构造。并没能意识到这只是信息学中庞大多项式理论中的the tip of the iceberg{\rm the\ tip \ of \ the \ iceberg}the tip of the iceberg查漏补缺格物致知。多项式:多项式可以是...原创 2019-05-17 15:06:58 · 1651 阅读 · 0 评论 -
原根
[大佬blog](https://www.cnblogs.com/cjoieryl/p/8438756.html)令Ord(a,b)= 最小的使 a ^ n % b == 1 的n那么若a是b的原根,则Ord(a,b)=phi(b)最小原根一般ha以枚举#include<cstdio>#include<cstring>#include<cctyp...原创 2018-03-04 15:15:53 · 277 阅读 · 0 评论 -
[SDOI2015]序列统计
3992: [SDOI2015]序列统计Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1829 Solved: 870[Submit][Status][Discuss]Description小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。小C用这个生成器生成了...原创 2018-03-04 17:04:32 · 195 阅读 · 0 评论 -
51Nod 1514美妙的序列
生成函数+多项式求逆。。。。。。套路:一般都是一个很简单的题目,输入不超过3个数字的那种,然后生成函数然后求逆。。。。。。。。当模板题吧。ACcode:#include<cstdio>#include<cstring>#include<cctype>#include<algorithm>#define maxn 400005using na...原创 2018-03-05 21:52:06 · 368 阅读 · 0 评论 -
快速傅里叶变换
一类用于以O(nlogn)O(n\log n)O(nlogn)的时间复杂度将多项式的系数表示法变为点值表示法或反之的方法。系数表示法:f(x)=∑i=0naixif(x) = \sum_{i=0}^na_ix^if(x)=∑i=0naixi点值表示法:多项式函数f(x)f(x)f(x)过nnn个不同的点(xi,yi)(x_i,y_i)(xi,yi),可以证明次数最小的f(x)f(x)...原创 2018-12-12 17:40:39 · 374 阅读 · 1 评论 -
Aizu 2560 Point Distance FFT
一般的FFT重点是找不变量,这里发现如果AB两点,我们把他们标号为 2nx+y2nx+y2nx+y那么通过两个标号相减的值可以反推出横坐标差和纵坐标差,那么直接把所有点按标号放入多项式卷起来即可。AC Code:#include<bits/stdc++.h>#define maxn (1<<23)#define LL long longusing namespac...原创 2018-12-24 09:48:51 · 246 阅读 · 0 评论 -
[HZOI 2015] 帕秋莉的超级多项式
g(x)≡(1+ln(1+1exp(∫1f(x))))kmod&ThinSpace;&ThinSpace;xng(x)\equiv(1+\ln(1+\frac1{\exp(\int\frac1{\sqrt{f(x)}})}))^k\mod x^ng(x)≡(1+ln(1+exp(∫f(x)1)1))kmodxn求g(x)′(modxn)g(x)&#x27; \p...原创 2019-01-01 23:24:55 · 185 阅读 · 0 评论 -
BZOJ 5093: 图的价值 第二类斯特林数$O(n \log n)$
简单题意一个带标号的图的价值定义为每个点度数的k(&lt;=2e5)k(&lt;=2e5)k(<=2e5)次方的和。n(&lt;=1e9)n(&lt;=1e9)n(<=1e9)个点的带标号的简单无向图的价值之和 (mod998244353)\pmod {998244353}(mod998244353)题解每个点只有标号之别,故只需要求出一个点的价...原创 2019-01-11 19:30:58 · 158 阅读 · 0 评论 -
Codeforces 1096G Lucky Tickets
题意:0~9种有k种可用数字,求前n/2个数字和与后n/2个数字和相等的方案数。n&lt;=200000且n为偶数n&lt;=200000 且 n为偶数n<=200000且n为偶数这题继续刷新我对多项式(常数)的认识。。。。。。不难发现这个题就是多项式快速幂。。。。。。然后我就想尝试一下新打的多项式expexpexp的版,O(nlogn)O(n \log n)O(nl...原创 2019-01-03 11:02:08 · 365 阅读 · 0 评论 -
五边形数定理
大佬太强了五边形数定理的实质就是欧拉函数Φ\PhiΦ(C++应该对希腊字母也有大小写区分吧)Φ(x)=∏i=1∞(1−xi)\Phi(x) = \prod_{i=1}^{ \infty } (1-x^i)Φ(x)=i=1∏∞(1−xi)然后通过这个函数的意义:包含偶数个不相等的整数的k的整数拆分-包含奇数个不相等的k的整数拆分。然后用数形结合发现只有和形如(广义)五边形数(n(3n−1...原创 2019-01-08 23:36:42 · 2186 阅读 · 0 评论 -
CF 1106 F. Lunar New Year and a Recursive Sequence
给出一个k阶递推式(mod998244353)\pmod{998244353}(mod998244353),f[1...k−1]=1,f[n]=mf[1...k-1] = 1,f[n] =mf[1...k−1]=1,f[n]=m求f[k]f[k]f[k]这个递推式显然让人想两边同时求一个对数。令g[i]=logf[i]g[i] = \log f[i]g[i]=logf[i]有g[i]=∑...原创 2019-02-01 13:27:18 · 248 阅读 · 0 评论 -
关于子树合并背包类型的dp的复杂度
前不久,WC2019考了一道风格新奇的数树。通过层层容斥化式猜结论,(子任务2)终于化简成了一道小清新树形DP:一个边集T的权值等于每个连通块的权值之积,每个连通块的权值等于k×k×k×联通块大小,求所有边集的权值之和。一个简单的实现方式是直接dpdpdp,令dp(i,j)dp(i,j)dp(i,j)表示划分到了iii这个子树,iii所在的联通大小为jjj时的所有边集权值之和,直接实现的复杂...原创 2019-03-06 15:36:31 · 695 阅读 · 0 评论 -
LG P5206 [WC2019] 数树
待填原创 2019-03-15 10:51:24 · 190 阅读 · 0 评论 -
烃烷计数
暴力DP:BZOJ4271 烷烃计数Polya定理型生成函数+分治FFT:大佬博客[HDU 6426 Problem A.Alkane(生成函数+NTT+polya)](https://blog.csdn.net/V5ZSQ/article/details/82684866原创 2019-03-29 22:06:46 · 559 阅读 · 0 评论 -
Codeforces F - Serval and Bonus Problem
大佬链接Beta函数是个什么鬼。。这个式子居然有大佬能化出来真是跪了。。。。。。注意文中的f[i]=1if[i] = \frac {1} {i}f[i]=i1是错的。看代码就知道是f[i]=1i!f[i] = \frac {1} {i!}f[i]=i!1AC Code:#include<bits/stdc++.h>#define maxn 100005#define...原创 2019-04-27 22:33:34 · 238 阅读 · 0 评论 -
NTT任意模数模板(+O(1)快速乘)
NTT任意模数的方法其实有点取巧。两个数列每个有n个数,每个数的大小最多是10^9。如果没有模数,那么卷积过后每个位置的答案一定小于10^9*10^9*n,差不多是10^24左右那么就有一个神奇的做法,选3个乘积大于10^24的NTT模数,分别做一次,得到每个位上模意义下的答案,然后用中国剩余定理得到模上三个质数乘积的答案。因为答案显然小于三个质数乘积,那么模上三个质数乘积的答案就是这个数应该的值...原创 2018-03-07 22:38:09 · 3182 阅读 · 0 评论