#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm> #define cal(...)(Vec){__VA_ARGS__}
const int BUF = ;
char Buf[BUF], *buf = Buf; inline void read (int &now)
{
for (now = ; !isdigit (*buf); ++ buf);
for (; isdigit (*buf); now = now * + *buf - '', ++ buf);
}
#define Max 150000 const double PI = acos (-.);
struct Vec
{
double x, y;
}; inline Vec operator + (Vec A, Vec B)
{
return cal (A.x + B.x, A.y + B.y);
}
inline Vec operator - (Vec A, Vec B)
{
return cal (A.x - B.x, A.y - B.y);
}
inline Vec operator * (Vec A, Vec B)
{
return cal (A.x * B.x - A.y * B.y, A.x * B.y + A.y * B.x);
}
inline Vec conj (Vec now)
{
return cal (now.x, -now.y);
} Vec *Get_w (int N)
{
static Vec w[Max / ];
w[].x = ;
w[] = cal (cos( * PI / N), sin ( * PI / N));
for (int i = ; i < N / ; ++ i)
w[i] = w[i - ] * w[];
return w;
} void FFT (Vec *a, int N)
{
register int i, j, k;
for (i = , j = ; i < N; ++ i)
{
if (i < j)
std :: swap (a[i], a[j]);
for (k = N >> ; ; k >>= )
if ((j ^= k) >= k)
break;
}
for (i = ; i < N; i <<= )
{
Vec *w = Get_w (i << );
for (j = ; j < N; j += i << )
{
Vec *b = a + j, *c = b + i;
for (k = ; k < i; ++ k)
{
Vec v = w[k] * c[k];
c[k] = b[k] - v;
b[k] = b[k] + v;
}
}
}
} void Mul (int *s, int *t, int N)
{
static Vec a[Max], b[Max], c[Max];
register int i, j;
for (i = ; i < N; ++ i)
{
a[i] = cal (s[i << ], s[i << | ]);
b[i] = cal (s[i << ], t[i << | ]);
}
FFT (a, N), FFT (b, N);
Vec *w = Get_w (N);
for (i = ; i < N; ++ i)
{
j = N - i & N - ;
c[j] = (conj (a[j] * b[j]) * cal() - (conj (a[j]) - a[i]) * (conj (b[j]) - b[i]) * ((i < N / ? w[i] : w[i - N / ] * cal(-)) + cal())) * cal(,.);
}
FFT (c, N);
for (i = ; i < N; ++ i)
{
s[i << ] = c[i].y / N + .;
s[i << | ] = c[i].x / N + .;
}
} int Main ()
{
freopen ("yukari.wife", "r", stdin);
fread (buf, , BUF, stdin); static int a[Max << ], b[Max << ];
int N, M;
read (N);
read (M); register int i;
for (i = ; i <= N; ++ i)
read (a[i]);
for (i = ; i <= M; ++ i)
read (b[i]);
int l = << std :: __lg (N + M + );
Mul (a, b, l >> );
for (i = , N += M; i <= N; ++ i)
printf ("%d ", a[i]);
return ;
}
int ZlycerQan = Main ();
int main (int argc, char *argv[]) {;}

炸掉的fft,改天再调的更多相关文章

  1. CAD在网页绘一个直线,得到直线id,再调该得到直线对象,然写扩展数据

    IMxDrawDatabase::ObjectIdToObject 实体id返回实体对象. 参数 说明 [in] LONGLONG lId 实体id JS代码,中绘一个直线,得到直线id,再调该得到直 ...

  2. P3376 【模板】网络最大流(70)

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  3. 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)

    再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...

  4. 转自 z55250825 的几篇关于FFT的博文(一)

        关于FFT,咱们都会迫不及待地 @  .....(大雾)(貌似被玩坏了...)    .....0.0学习FFT前先orz FFT君.         首先先是更详细的链接(手写版题解点赞0v ...

  5. 微信小程序-用户拒绝授权使用 wx.openSetting({}) 重新调起授权用户信息

    场景模拟:用户进入微信小程序-程序调出授权 选择拒绝之后,需要用到用户授权才能正常使用的页面,就无法正常使用了. 解决方法:在用户选择拒绝之后,弹窗提示用户 拒绝授权之后无法使用,让用户重新授权(微信 ...

  6. fft ocean注解

    针对这两篇教程: http://www.keithlantz.net/2011/10/ocean-simulation-part-one-using-the-discrete-fourier-tran ...

  7. MySql(十):MySQL性能调优——MySQL Server性能优化

    本章主要通过针对MySQL Server( mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优 ...

  8. Tomcat性能调优及JVM内存工作原理

    Java性能优化方向:代码运算性能.内存回收.应用配置. 注:影响Java程序主要原因是垃圾回收,下面会重点介绍这方面 代码层优化:避免过多循环嵌套.调用和复杂逻辑.Tomcat调优主要内容如下:1. ...

  9. [调参]CV炼丹技巧/经验

    转自:https://www.zhihu.com/question/25097993 我和@杨军类似, 也是半路出家. 现在的工作内容主要就是使用CNN做CV任务. 干调参这种活也有两年时间了. 我的 ...

随机推荐

  1. HTML5 Notification

    H5的Notification特性 Web桌面通知 Notification API的通知接口用于向用户配置和显示桌面通知. 生产环境仅支持https下使用:否则会被默认禁止.开发环境可以在local ...

  2. vue的生命周期 created mounted等

    生命周期: beforeCreate 在实例初始化之后,数据观测和event/watcher时间配置之前被调用 created 页面加载之前执行,在实例创建完成后被立即调用.执行顺序:父组件-子组件 ...

  3. JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈

    大家都知道java模拟机在运行时要开辟空间所以它有特定的五个内存划分: 1.寄存器:    2.本地方法区:    3.方法区:    4.栈内存:    5.堆内存: 但是我们今天来注重讲一下栈和堆 ...

  4. QuartzNet 任务管理系统

    最近有面试!都有问道Quartz方面的问题,之前的项目有使用过,也知道怎么用,但面试时要说出它的原理,一时半会还真说不来!查阅了一些资料先记录下来吧 Quartz.NET官网地址:https://ww ...

  5. Tomcat HTTP connector和AJP connector

    Tomcat服务器通过Connector连接器组件与客户程序建立连接,“连接器”表示接收请求并返回响应的端点.即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户. ...

  6. win7 ReadyBoot 文件位置修改

    右键我的电脑,依次点开系统工具-性能-数据收集器集-系统-事件跟踪会话 在右边找到ReadyBoot,右键打开属性,会话框上方选择文件,根据示例文件名的路径找到ReadyBoot.etl文件,复制到你 ...

  7. element-ui里的form校验,一直有点疑惑,prop是怎么对应的?

    图一 图一中红框内的这种校验,必须在 这个product_form数据域内定义对应的变量名(cid.itemName......),不然对应不上. 图一红框外的那种校验,则不用在数据域内定义对应的变量 ...

  8. css 层叠 比较特殊性

    css 层叠: 多个相同的css声明(属性),应用到同一个元素上.当一个标签声明冲突时,浏览器会自动出发层叠机制 1:比较优先级 2:比较特殊性 3:比较源次序 依次经过上面的1,2,3的比较后,最终 ...

  9. vue 做的tabBar组件

    效果如下 调用 <tabbar :selected='selected'></tabbar> 组件 <template> <div class='tabbar ...

  10. Mysql踩坑 自动更新的时间只允许有一个

    执行如下SQL创建表: CREATE TABLE aa ( a INT, b TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c TIMESTAMP DEFAULT CU ...