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

\[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

[BZOJ2194] 快速傅立叶之二 题解的更多相关文章

  1. bzoj2194 快速傅立叶之二 ntt

    bzoj2194 快速傅立叶之二 链接 bzoj 思路 对我这种和式不强的人,直接转二维看. 发现对\(C_k\)贡献的数对(i,j),都是右斜对角线. 既然贡献是对角线,我们可以利用对角线的性质了. ...

  2. [bzoj2194]快速傅立叶之二_FFT

    快速傅立叶之二 bzoj-2194 题目大意:给定两个长度为$n$的序列$a$和$b$.求$c$序列,其中:$c_i=\sum\limits_{j=i}^{n-1} a_j\times b_{j-i} ...

  3. BZOJ2194:快速傅立叶之二(FFT)

    Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...

  4. BZOJ2194 快速傅立叶之二 【fft】

    题目 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. 输入格式 ...

  5. BZOJ2194: 快速傅立叶之二 FFT_卷积

    Code: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring ...

  6. bzoj2194: 快速傅立叶之二

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  7. 2018.11.18 bzoj2194: 快速傅立叶之二(fft)

    传送门 模板题. 将bbb序列反过来然后上fftfftfft搞定. 代码: #include<bits/stdc++.h> #define ri register int using na ...

  8. bzoj千题计划256:bzoj2194: 快速傅立叶之二

    http://www.lydsy.com/JudgeOnline/problem.php?id=2194 相乘两项的下标 的 差相同 那么把某一个反过来就是卷积形式 fft优化 #include< ...

  9. BZOJ2194: 快速傅立叶之二(NTT,卷积)

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1776  Solved: 1055[Submit][Status][Discuss] Descript ...

  10. 【BZOJ2194】快速傅立叶之二

    [BZOJ2194]快速傅立叶之二 Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. ...

随机推荐

  1. opencv imshow 大图片显示,拖动显示

    用imshow显示大图片,不能完整显示,不方便.结合网友的代码,修改成现在的代码,可以拖动图片,方便查看完整图片.而且方便调试,只需要用MatShow替换imshow. struct MousePar ...

  2. docker-compose的nginx更换完ssl证书不起作用的完美解决方法

    ​以Harbor为例,ssl证书更新后,docker-compose启动不起作用. 问题出在一句很重要的命令:./prepare 步骤:(Harbor样例) 1. cd /data/ssl 换ssl证 ...

  3. R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

    之前给大家写过好几篇很详细的临床预测模型的原理解析,本文接着之前的文章,继续写做法,首先依然是找到一篇参照论文,今天我们的示例文章是一篇来自美国心脏学会杂志的文章: Zhang X, Yuan K, ...

  4. 关于在Rocky linux下安装dotnet sdk不成功的问题

    Rocky Linux 9,运行 dnf install -y dotnet-sdk-6.0 一切正常,运行起来非常顺利,安装完毕.但是非常诡异,运行 dotnet --list-sdks dotne ...

  5. arm mattermost

    It's not so hard, here is my working steps for arm64 device. cd ~/build/mattermost wget https://raw. ...

  6. Qt/C++开发经验小技巧291-295

    国内站点:https://gitee.com/feiyangqingyun 国际站点:https://github.com/feiyangqingyun 关于在pro中区分linux系统,在Qt4套件 ...

  7. Qt音视频开发32-Onvif网络设置

    一.前言 用onvif协议来对设备的网络信息进行获取和设置,这个操作在众多的NVR产品中,用的很少,绝大部分用户都还是习惯直接通过摄像机的web页面进去配置,其实修改网络配置的功能在大部分的NVR中都 ...

  8. 即时通讯技术文集(第41期):直播技术合集(Part1) [共12篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第41 期. [- 1 -] 移动端实时音视频直播技术详解(一):开篇 [链接] http:// ...

  9. 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

    ► 相关链接: ①MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发有 ...

  10. CDS标准视图:维护策略数据 I_MaintenanceStrategyData

    视图名称:维护策略数据 I_MaintenanceStrategyData 视图类型:基础视图 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IMAINTSTRATD ...