FFT
A1847225889
在一次次翻车中吸取教训……
展开
-
6718. 【2020.06.12省选模拟】T1 Number
题目正解随便生成函数,显然答案为(∏(1+xti))m(\prod (1+x^{t_i}))^m(∏(1+xti))m外面的这个乘方可以直接快速幂,时间复杂度O(elgelgm)O(e\lg e \lg m)O(elgelgm)。重点是如何计算里面的这个东西。由于∑ti≤2e7\sum t_i\leq2e7∑ti≤2e7,所以不同的tititi的个数大概是∑ti\sqrt {\sum t_i}∑ti,约等于600060006000。将tit_iti相同的一起计算,用个组合数就可以原创 2020-06-12 21:50:34 · 251 阅读 · 0 评论 -
6708. 【2020.06.08省选模拟】密码
题目正解比赛时几乎没有思考,直接放正解。先讲讲GrayZhong的NB做法。看着这题不难让人想到FFT,然而这题要求概率,系数应该乘在一起,但直接卷积是加在一起的。于是——取对数!然后过了(不知道为什么精度没有被卡)。然后就是题解做法。真的没有想到,正解真的是卡精度相关……如果概率小于12\frac{1}{2}21,连乘lg1e9\lg1e9lg1e9次就卡到了精度范围。正解就是建立在这个基础上的……将每个位置出现概率最大的数字找出来,记为sis_isi。很显然,这个位置其它的原创 2020-06-09 07:49:21 · 238 阅读 · 0 评论 -
瞎讲:任意模数MTT
还没有写代码,瞎讲一下。三模数NTTNTTNTT大概思路就是用三个满足a∗2b+1a*2^b+1a∗2b+1形式的质数来做NTTNTTNTT,然后用数论方法搞出它的具体值(当长度为10510^5105级别时,卷积之后数字最多为102310^{23}1023,所有同余的数中只有最小的那个在范围内)。一般选469762049,998244353,1004535809469762049,998244353,1004535809469762049,998244353,1004535809,原根都是333原创 2020-05-19 12:10:17 · 236 阅读 · 0 评论 -
瞎讲:FFT三次变二次优化
2020年了我怎么还是没有学会任意模数NTT……发现自己多项式的技能没有点的还有很多。处理任意模数NTT有一系列的方法,其中有个看起来比较优的算法需要FFT三次变二次优化。众所周知,普通的FFT长这样:假设是多项式A(x)A(x)A(x)和B(x)B(x)B(x)求卷积,首先求DFT(A)DFT(A)DFT(A)和DFT(B)DFT(B)DFT(B),两者相乘后求IDFTIDFTIDFT这样算了三次DFTDFTDFT。接下来的算法可以将三次DFTDFTDFT优化成两次。设P(x)=A(x)原创 2020-05-18 22:24:30 · 813 阅读 · 0 评论 -
6445. 【GDOI2020模拟01.19】String
题目正解一听到正解是NTT,我心态崩了。我特么知道是NTT都不知道该怎么做!哪里像个卷积了?好吧,是我孤陋寡闻……设两个字符串分别为AAA和BBB可以考虑试着计算出AAA每个子串和BBB的相似度(就是位置相同、字母相同的个数),直接统计就完事了。看到字符集这么小,就可以对于每个字母分开考虑。假如Ai=BjA_i=B_jAi=Bj,那么以Ai−j+1A_{i-j+1}Ai−j+1...原创 2020-01-28 20:02:44 · 252 阅读 · 0 评论 -
快速傅里叶变换(FFT)学习
首先,在写这篇博客之前,我还没有完全学会FFT。先把会的部分打好,加深一下记忆(也可以说是做笔记吧)。初三了,还不会FFT,要退役喽……多项式乘法点开这篇博客之前,你就应该知道,FFT是用来求多项式乘法的。什么是多项式,什么是多项式乘法?不讲。初一内容。如果要求多项式乘法,有一个非常显然的做法,就是暴力。时间复杂度是O(N2)O(N^2)O(N2)的,很朴素。然而FFT这个东西...原创 2018-12-11 18:37:46 · 349 阅读 · 0 评论 -
[JZOJ3303] 【集训队互测2013】城市规划
题目题目大意求NNN个点的简单无向图的方案数(有编号)。结果对100453580910045358091004535809取模。思考历程感觉这个问题非常经典。当时想到了一堆式子,但都觉得可能会有重和漏,于是弃掉了……最终打了个纯得不能再纯的暴力,在本地开O3,将111到888的答案都跑出来,打了个表……正解正解的一部分似乎被我错过了。显然是DP,设fif_ifi表示大小为...原创 2019-07-07 22:18:55 · 206 阅读 · 0 评论 -
[JZOJ4330] 【清华集训模拟】几何题
题目题目大意也懒得解释题目大意了……正解正解居然是FFTFFTFFT?不要看题目的那个式子这么长,也不要在那个式子上下手。其实我们会发现,不同的(xi−xj,yi−yj,zi−zj)(x_i-x_j,y_i-y_j,z_i-z_j)(xi−xj,yi−yj,zi−zj)并不多。如果我们求出每个三元组的出现次数,后面的就好做了。那怎么求呢?祭出我们的大杀器——FFTF...原创 2019-08-27 22:07:01 · 127 阅读 · 0 评论