#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. Maven安装和加速

    Maven安装和加速 下载带二进制源码包,解压 将bin设置为环境变量 加速器,修改conf文件夹下的settings.xml文件,添加如下镜像配置: <mirrors> <mirr ...

  2. C#-Parallel

    using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Li ...

  3. python中数组用法

    增加时a.append( 'a ')就可以了.只要按顺序加,就没有问题 . 使用时,完全可以使用下标: 代码如下 复制代码 a[0] a[1] 但出果引用不存在的下标,则会引发异常.这时,你需要先添加 ...

  4. Kafka架构和原理深度剖析

    Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率. ...

  5. axios配置及使用(发起请求时带上token)

    1.安装 利用npm安装 npm install axios --save 2.引入即可使用 import axios from 'axios' 3.目录 4.各个文件设置: (1)env.js ex ...

  6. js同时获取多个共同class内容标签内容集合

    1.获取标签内容  标签如下:   <img image-code="#qq_1_gif#" class="emoji_icon" src="i ...

  7. 使用browser-sync预览pandoc markdown???

    由于 pandoc markdown在sublime下面并不能很好的预览,因此可以直接 使用 pandoc build成html,然后借助下面的工具进行实时在浏览器里面预览 http://www.br ...

  8. 【SpringMVC】参数绑定

    一.概述 1.3 参数绑定过程 1.2 @RequestParam 二.自定义绑定使用属性编辑器 2.1 使用WebDataBinder(了解) 2.2 使用WebBindingInitializer ...

  9. Android笔记(二十五) ListView的缓存机制与BaseAdapter

    之前接触了ListView和Adapter,Adapter将数据源和View连接起来,实际应用中,我们要显示的数据往往有很多,而屏幕只有那么大,系统只能屏幕所能显示的内容,当我们滑动屏幕,会将旧的内容 ...

  10. DNS服务——域名解析容错

    介绍 DNS服务至关重要,你我每天访问网站不可能是记忆IP地址.因此DNS服务器的可靠性至关重要.下面介绍DNS服务器容错机制,看图 为了防止DNS服务器故障不再提供服务,引入辅助DNS服务器.辅助D ...