0XFF---FFT是啥? FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform),它根据离散傅氏变换的奇.偶.虚.实等 特性,对离散傅立叶变换的算法进行改进获得的. ---百度百科 对于两个多项式 \(F(x)\) 和 \(G(x)\) ,要求你将他们乘起来. 那还不简单?直接暴力相乘啊: 设 \(F(x)\) 的系数数列为 \(C\). \(F(x) \times G(x) = C_nx^nG(x) + C_{n-1}x^{n-1}G(x) + C_…
本文主要简单写写自己在算法竞赛中学习FFT的经历以及一些自己的理解和想法. FFT的介绍以及入门就不赘述了,网上有许多相关的资料,入门的话推荐这篇博客:FFT(最详细最通俗的入门手册),里面介绍得很详细. 为什么要学习FFT呢?因为FFT能将多项式乘法的时间复杂度由朴素的$O(n^2)$降到$O(nlogn)$,这相当于能将任意形如$f[k]=\sum\limits _{i+j=k}f[i]\cdot f[j]$的转移方程的计算在$O(nlogn)$的时间内完成.因此对于想要进阶dp的同学来说,…
前言 啊摸鱼真爽哈哈哈哈哈哈 这个假期努力多更几篇( 理解本算法需对一些< 常 用 >数学概念比较清楚,如复数.虚数.三角函数等(不会的自己查去(其实就是懒得写了(¬︿̫̿¬☆) 整理了一点点资料(确信 本文仅为作者的总结与完善和本人的理解与观点,有任何误导性错误请多多指出 [WARNING]文笔极差,文章极度啰嗦且可能有些迷惑hhh,尽力了_(:з)∠)_ 概述(可略过 离散傅里叶变换(Discrete Fourier Transform,缩写为 DFT),是傅里叶变换在时域和频域上都呈离散…
前言 \(\text{FFT}\)(快速傅里叶变换)是 \(O(n\log n)\) 解决多项式乘法的一个算法,\(\text{NTT}\)(快速数论变换)则是在模域下的,而 \(\text{MTT}\)(毛神仙对\(\text{FFT}\)的精度优化算法)可以针对任意模数.本文主要讲解这三种算法,具体的应用还请参考我博客内的题解. 正文 FFT-快速傅里叶变换 学习这个算法可以借助<算法导论>,当然算导上的东西需要耐心才能啃下来.这里只是概括一下算导上的介绍,并加入一些个人的见解.下面逐步介…
复数及单位根 复数的定义大概就是:\(i^2=-1\),其中\(i\)就是虚数单位. 那么,在复数意义下,对于方程: \[ x^n=1 \] 就必定有\(n\)个解,这\(n\)个解的分布一定是在复平面上,以圆点为圆心,半径为\(1\)的圆的\(n\)等分点. 由于欧拉公式: \[ e^{i\theta}=\cos\theta+i\cdot \sin\theta \] 把\(2\pi\)带入: \[ e^{2i\pi}=1 \] 比较一下这个和上面的方程,设: \[ \omega_n=e^{2i…
概述 FWT的大体思路就是把要求的 C(x)=A(x)×B(x)  即 \( c[i]=\sum\limits_{j?k=i} (a[j]*b[k]) \) 变换成这样的:\( c^{'}[i]=a^{'}[i]*b^{'}[i] \). 只要知道 c'[ i ] 和 c[ i ] 的关系,就能把 A(x).B(x) 变成 A'(x).B'(x) ,从而算出 C'(x) ,再把 C'(x) 变成 C(x). 或卷积 定义\( c^{'}[i]=\sum\limits_{j | i=i} c[j]…
定义 若数列 \(\{a_i\}\) 满足 \(a_n=\sum_{i=1}^kf_i \times a_{n-i}\) ,则该数列为 k 阶齐次线性递推数列 可以利用多项式的知识做到 \(O(k\log k \log n)\) 求第 n 项. 如果给出前 k 项,想知道 \(f_i\) ,可以在 \(O(k^2)\) 的时间内求出. 求 \(f_i\) 有 Berlekamp Massey 算法和 Reeds Sloane 算法,具体算法思想是啥咱也不知道,咱只知道这东西放进去就能跑. 前者需…
对于委托和事件,看了不少博文,当时好像都理解了,过了一段时间,又忘记的差不多了.每每如此,感觉自己很笨,记性差,其实是没有深入理解透切,没有按照自己的语言表达出来,当然容易忘记.今天又花了一些时间,好好理解,总结别人的文章,用自己文字概况出来. 总结如下: 委托可以定义任何地方,应该说是委托声明 事件类可以单独放一个地方,包含一些属性 事件一定定义在发布者里面,应该说是事件声明,并在这里做判断注册事件,给事件类属性赋值 订阅者,也就是事件的受理者,它里面有些方法并后续操作. 客户端把发布者与订阅…
通常,我们在浏览器中写动画会用到哪些技术呢? flash 可以实现一些非常复杂的动画,但随着HTML5的成熟,个人感觉flash终究会成为明日黄花. css3 当前大部分现代浏览器已经对css3支持的很好了.通过transform实现2D/3D转换,通过transition实现元素过渡效果,使用animation与keyframes搭配实现复杂动画.而且用css3写动画还有个优点就是不会报错,我们写脚本的时候常常会出现语法错误,但css不会,大不了浏览器不认识规则不起作用呗(PS:有需要支持ie…
webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不用会忘掉一丢丢,但是看过脑海中还是有印象的. webpack能够用作模块加载和打包类似Browserify,且能做更多.类似上诉模块管理工具都会有一个相应的配置文件,用于说明,你打包的文件,包装的模块等. webpack常用命令: webpack -p 压缩混淆脚本 webpack --watch…