FFT小结

本文总结了快速傅里叶变换(FFT)在算法竞赛中的应用,包括在BZOJ 3160、HDU 4609、hihoCoder 1388、HDU 6061和PKU Campus 2017 Reverse K-th Problem等题目中的使用。通过FFT解决求回文子序列、二元组对数、最小和、函数变换和区间第k大数的问题,展示了FFT在处理卷积和多项式运算上的效率。

FFT(快速傅里叶变换)小结

(理论写也只能copy,就略过了)

BZOJ 3160 万径人踪灭

略过manacher求连续回文子序列的部分,问题到了求出总的回文子序列个数

fi表示以i为中心对称的字符对个数,容易想到i对答案的贡献为:

fij=1Cjfi=2fi1

问题转化到了求fi,显然我们可以O(n2)求得,但时间复杂度过高。

manacher处理过后的串中,我们发现对于位置pos,如果si=sj(i+j=pos)则对fpos有贡献。

好了,我们发现这就是个卷积:fi=i1j=1(sj==sij)

分别处理字符a,b,即可

HDU 4609 3-idiots

这题某个学校的校赛出过简化版本的大概题意:给 n个数m次询问, 每次询问 一个k 求和小于k的二元组的对数 n<105,m<105,每个数 ai<105k<2×105。由于值域很小,记录下每个数出现的次数,卷积算一下就好。

回到hdu4609,其实相比上面,就是要减去不合法的答案,与卷积无关就不扯了

hihoCoder 1388 Periodic Signal

(当时板刷了,然而都不会)

将式子展开可以得到A2i+B2i2AiBi+k

前面两项的和是固定的,所以问题转化为了求AiBi+K的最小值

我们将B翻转一下就可以卷积了,但注意到是循环的,和其实是Ci+Ci+n

注意到数很大,FFT精度会不够,所以用大数NTT。

HDU 6061 RXD and functions

(敦老师的妙题,多校现场没转成卷积式)

首先考虑函数的平移,我们发现变换m次等效于变换一次a

为了方便我们把s=a取反,所以题意就是求f(x+s)的系数

依旧是将式子展开,由二项式定理:

f(x+s)      =i=0nxij=inCijcjsji=i=0nxij=inj!(ji)!i!cjsjiai=cni(ni)!,bi=sii!=i=0nxii!j=inanjbji=i=0nxii!j=0nianijbjxi=i=0nxi(ni)!j=0iaijbj

然后NTT搞一搞,倒着输出

PKU Campus 2017 Reverse K-th Problem

(比赛的时候推出了式子,最后没时间了)

题目大意就是给出值域为n长度为n的数组,有·q组询问,问有多少个区间满足第k大为x

看上去是个数据结构,但复杂度明显不对,我们需要O(1)处理每个询问。

假设现在计算下标now的数的答案,我们用Li表示now左边比anow第i大的数的位置,用Ri表示now右边比anow第i打的数的位置,那么对询问anow,k答案的贡献是(Li1Li)(Rki+1Rki)

li=LiLi+1,ri=Ri+1Ri

那么ansanow,k=i=0k1li×rk1i

我们发现这是个卷积,那么我们就可以O(nlogn)算出anow的所有答案。

总的时间复杂度为O(n2logn+q)

图像增强是数字图像处理领域中的一个重要分支,它旨在改进图像的质量,以便更好地展示图像中的信息。Matlab是一个功能强大的数学软件,也是图像处理中常用的工具之一。在Matlab中,图像增强可以通过各种滤波器、变换和修复技术来实现。以下是图像增强Matlab实验的一些小结: 1. 直方图均衡化 直方图均衡化是一种基本的图像增强方法。它通过对图像像素值的分布进行调整来增强图像对比度。Matlab中可以使用histeq函数来实现直方图均衡化。 2. 空间域滤波器 空间域滤波器是一种基于像素值的滤波器。它们通过对每个像素及其邻域像素进行加权平均来实现图像增强。常见的空间域滤波器包括均值滤波器、中值滤波器和高斯滤波器等。在Matlab中,可以使用imfilter函数来实现这些滤波器。 3. 频率域滤波器 频率域滤波器是一种基于傅里叶变换的滤波器。它们通过将图像转换到频率域进行处理来实现图像增强。常见的频率域滤波器包括理想滤波器、巴特沃斯滤波器和高斯滤波器等。在Matlab中,可以使用fft2函数将图像转换到频率域,并使用ifft2函数将其转换回空间域。 4. 图像修复 图像修复是一种针对图像噪声或缺陷进行修复的技术。常见的图像修复方法包括基于局部统计信息的方法、基于偏微分方程的方法和基于小波变换的方法等。在Matlab中,可以使用imnoise函数添加噪声,并使用各种修复方法来恢复图像。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值