[BZOJ2194] 快速傅立叶之二 题解

看名字,然后准备转化为多项式乘法。

\[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \]

\(a\) 反转,得:

\[c_k=\sum_{i=0}^{n-k-1}a_{n-i-k-1}b_i \]

这已经是多项式乘法的格式了,直接多项式乘法,最后对函数 \(c\)\(0\)\(n-1\) 次项倒序输出即可。

时间复杂度 \(O(n\log n)\)

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
const double pi=acos(-1);
int n,m,rev[N];
struct comn{double a,b;}f[N],g[N];
comn operator+(comn x,comn y){return {x.a+y.a,x.b+y.b};
}comn operator-(comn x,comn y){return {x.a-y.a,x.b-y.b};
}comn operator*(comn x,comn y){return {x.a*y.a-x.b*y.b,x.b*y.a+x.a*y.b};
}void operator+=(comn &x,comn y){x=x+y;}
void operator*=(comn &x,comn y){x=x*y;}
void init(int k,int len){for(int i=0;i<len;i++)rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));
}void fft(comn *a,int n,int fl){for(int i=0;i<n;i++)if(i<rev[i]) swap(a[i],a[rev[i]]);comn om={cos(pi),fl*sin(pi)},w={1,0};for(int i=1;i<n;i*=2,om={cos(pi/i),fl*sin(pi/i)})for(int j=0;j<n;j+=i*2,w={1,0})for(int k=j;k<j+i;k++){comn x=a[k],y=w*a[k+i];a[k]+=y,a[k+i]=x-y,w*=om;}
}int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;int k=0,mx=1;while(mx<=n+n-2) mx*=2,k++;for(int i=0;i<n;i++)cin>>f[n-i-1].a>>g[i].a;init(k,mx),fft(f,mx,1),fft(g,mx,1);for(int i=0;i<mx;i++) f[i]*=g[i];fft(f,mx,-1);for(int i=n-1;~i;i--)cout<<(int)(f[i].a/mx+0.5)<<"\n";return 0;
}//fast fourier transform

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871194.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工具 | MemShellParty

0x00 简介 MemShellParty是一键常见中间件框架内存马生成工具。一键生成常见中间件框架内存马,让内存马测试变得简单高效,打造内存马的全方位学习平台 下载地址: MemShellParty下载: MemShellParty下载 0x01 功能说明TomcatJettyGlassFishPayaraResinSpringMVCSpringWebFlux…

RK3506到底有多香?抢先看核心板详细参数配置

RK3506是瑞芯微Rockchip在2024年第四季度全新推出的入门级芯片平台,三核Cortex-A7+单核Cortex-M0多核异构设计,具备最高-40~85℃的工业宽温性能、发热量小,IO接口丰富, 即时性高, 低延迟, 反应速度快等特点!触觉智能已推出RK3506核心板,抢先了解核心板详细参数配置。产品概…

机器学习基础原理————可解释性LIME原理

More: https://www.big-yellow-j.top/如果⼀个机器学习模型运⾏良好,为什么我们仅仅信任该模型⽽忽略为什么做出特定的决策呢? 诸如分类准确性之类的单⼀指标⽆法完整地描述⼤多数实际任务。当涉及到预测模型时,需要作出权衡:你是只想知道预测是什么?例如,客户流失的概率…

【神兵利器】Windows平台shellcode免杀加载器

项目介绍 免杀,bypassav,免杀框架,nim,shellcode,使用nim编写的shellcode加载器,可快速生成免杀可执行文件 下载地址 Windows平台shellcode免杀加载器下载:Windows平台shellcode免杀加载器下载 项目特点 1:自带四种加载方式 2:可自行拓展加载方式 3:支持两种加密技术…

在电脑上记录工作内容和日记的软件哪款好用?

想要在电脑上随手记录工作内容、日记琐事、待办事项、日程安排等,哪款软件简单好用呢? 今天来介绍四款常用的电脑桌面记事软件,总有一款是你喜欢的? 一、sticky notes Sticky Notes 是 Windows 系统自带的便签工具,也叫 “便笺”。它以彩色便利贴的形式展现在电脑桌面上,…

JAVA安全之JDK8u141版本绕过研究

基本介绍 从JDK8u141开始JEP290中针对RegistryImpl_Skel#dispatch中bind、unbind、rebind操作增加了checkAccess检查,此项检查只允许来源为本地,下面以bind为例: public void dispatch(Remote var1, RemoteCall var2, int var3, long var4) throws Exception {if (var4 != 4…

漏洞预警 | Apache NiFi信息泄露漏洞

0x00 漏洞编号CVE-2024-565120x01 危险等级中危0x02 漏洞概述 Apache NiFi是一个强大的、易于使用的数据集成平台,旨在自动化和管理数据流,尤其是在大数据环境中。0x03 漏洞详情CVE-2024-56512漏洞类型:信息泄露 影响:获取敏感信息 简述:Apache NiFi的/nifi-api/flow/proc…

漏洞预警 | Netis Wifi路由器信息泄露漏洞

0x00 漏洞编号CVE-2024-484550x01 危险等级高危0x02 漏洞概述 Netis Wi-Fi路由器以其稳定的性能、易用的管理界面以及较高的性价比受到许多用户的青睐。0x03 漏洞详情CVE-2024-48455漏洞类型:信息泄露 影响:获取敏感信息 简述:Netis Wi-Fi路由器的/cgi-bin/skk_get.cgi接口存…

漏洞预警 | 明源地产ERP SQL注入漏洞

0x00 漏洞编号暂无0x01 危险等级高危0x02 漏洞概述 明源地产ERP是一款专为房地产行业设计的企业资源计划管理系统,致力于为房地产开发企业提供全面的管理解决方案。0x03 漏洞详情 漏洞类型:SQL注入 影响:获取敏感信息 简述:明源地产ERP系统的X-Forwarded-For头部存在SQL注入…

多项式算法初探:从 FFT 到 FWT(目前只有FFT)

多项式一向是算法竞赛中相当博大精深的东西,作为一个蒟蒻,我将会以最大的努力完成这篇记录,以防自己以后看不懂qwq。FFT(快速傅里叶变换) FFT 是一种可以在 \(O(n\log n)\) 的时间内完成多项式乘法的算法。这个算法的劣势在于精度。 我将会从复数、DFT、FFT 和 IFFT 四个部分…

漏洞预警 | WordPress Plugin Radio Player SSRF漏洞

0x00 漏洞编号CVE-2024-543850x01 危险等级高危0x02 漏洞概述 WordPress插件Radio Player是一种简单而有效的解决方案,用于将实时流媒体音频添加到您的WordPress网站。0x03 漏洞详情CVE-2024-54385漏洞类型:SSRF 影响:获取敏感信息 简述:Radio Player的/wp-admin/admin-aja…