FFT/NTT 总结(HDU 4656)

        FFT/NTT可以说是非常有名的两个东西,从通信到数学再到计算机领域……

        然后我本人接触这个东西也就是在今年暑假的时候。其实呢,到现在,它的变化本质和算法的实现方法我还并不是很了解。但是呢,作为一个ACM选手,能够做到会熟练的运用算法模板,懂得一些变通也就差不多能够算是合格了。而且,FFT/NTT本身也没什么,就是套用模板即可。

        下面我就具体说说FFT/NTT怎么用,在什么情况下使用,以及一些注意事项。

        首先从最简单的开始。我们在初学的时候,学过一些大整数的乘法,高精度,然后显然,这个复杂度是O(N^2)的,如果数字的位数长一点的话很容易就TLE了,那么有没有什么方法能够优化呢?答案是肯定的。根据大整数乘法的运算方式,我们很容易可以发现,运算发生正好符合卷积的运算,即每一位乘以另一个数字所有位。于是可以用FFT迎刃而解,复杂度为O(NlogN)。

        可以看出,FFT/NTT说白了,就是用来计算卷积的一个快速工具。有了这个工具可以解决很多问题。但是,关键是如何把一些问题转换为卷积的形式来计算。在之前多校赛的时候就曾经出过一道题目,具体可以看我的博客。

        下面,我就HDU 4656具体的来推导一下。我还是上图吧,字丑勿喷……

 

        在以上的推导中,由于最后的表达式比较复杂࿰

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值