BZOJ 2194 快速傅里叶之二
fft。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<complex>
#define maxn 300500
#define pi acos(-1)
using namespace std;
typedef complex<double> E;
int n,m,l=,c[maxn],r[maxn];
E a[maxn],b[maxn];
void fft(E *x,int f)
{
for (int i=;i<n;i++)
if (i<r[i]) swap(x[i],x[r[i]]);
for (int i=;i<n;i<<=)
{
E wn(cos(pi/i),f*sin(pi/i));
for (int j=;j<n;j+=(i<<))
{
E w(,);
for (int k=;k<i;k++)
{
E r1,r2;
r1=x[j+k];r2=w*x[i+j+k];
x[j+k]=r1+r2;x[j+k+i]=r1-r2;
w*=wn;
}
}
}
if (f==-)
{
for (int i=;i<n;i++)
x[i]/=n;
}
}
int main()
{
scanf("%d",&n);n--;
for (int i=;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
a[i].real()=x;b[n-i].real()=y;
}
m=*n;
for (n=;n<=m;n<<=) l++;
for (int i=;i<n;i++) r[i]=(r[i>>]>>)|((i&)<<(l-));
fft(a,);fft(b,);
for (int i=;i<n;i++) a[i]*=b[i];
fft(a,-);
for(int i=m/;i<=m;i++)
printf("%d\n",(int)(a[i].real()+0.1));
return ;
}
BZOJ 2194 快速傅里叶之二的更多相关文章
- 【BZOJ】【2194】快速傅里叶之二
FFT c[k]=sigma a[i]*b[i-k] 这个形式不好搞…… 而我们熟悉的卷积的形式是这样的 c[k]=sigma a[i]*b[k-i]也就是[下标之和是定值] 所以我们将a数组反转一下 ...
- BZOJ 2194 快速傅立叶变换之二 | FFT
BZOJ 2194 快速傅立叶变换之二 题意 给出两个长为\(n\)的数组\(a\)和\(b\),\(c_k = \sum_{i = k}^{n - 1} a[i] * b[i - k]\). 题解 ...
- 【BZOJ-2179&2194】FFT快速傅里叶&快速傅里叶之二 FFT
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2978 Solved: 1523[Submit][Status][Di ...
- 【BZOJ 2194】2194: 快速傅立叶之二(FFT)
2194: 快速傅立叶之二 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1273 Solved: 745 Description 请计算C[k]= ...
- bzoj 2194: 快速傅立叶之二 -- FFT
2194: 快速傅立叶之二 Time Limit: 10 Sec Memory Limit: 259 MB Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k & ...
- bzoj 2194 快速傅立叶之二 —— FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2194 如果把 a 序列翻转,则卷积得到的是 c[n-i],再把得到的 c 序列翻转即可. 代 ...
- 【BZOJ 2194】快速傅立叶之二
随便代换一下把它变成多项式乘法,及$C[T]=\sum_{i=0}^{T}A[i]×B[T-i]$这种形式,然后FFT求一下就可以啦 #include<cmath> #include< ...
- [BZOJ]2194: 快速傅立叶之二
题目大意:给定序列a,b,求序列c满足c[k]=sigma(a[i]*b[i-k]) (k<=i<n).(n<=10^5) 思路:观察发现就是普通的卷积反一反(翻转ab其中一个后做卷 ...
- 【刷题】BZOJ 2194 快速傅立叶之二
Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...
随机推荐
- 【POJ】【1067】取石子游戏
博弈论 这个是博弈游戏中的Wythoff博弈: 以下为我的代码: //POJ 1067 #include<cmath> #include<cstdio> #include< ...
- 2013 Asia Hangzhou Regional Contest
Lights Against Dudely http://acm.hdu.edu.cn/showproblem.php?pid=4770 15个位置,所以可以暴力枚举那些放,对于放的再暴力枚举哪个转, ...
- netbeans 7安装xdebug调试php程序
1.下载安装xdebug 先从xdebug官网下载对应php版本的xdebug组件,下载地址是:http://www.xdebug.org/download.php 如果不确定下载哪个版本的xdebu ...
- APT攻击
http://netsecurity.51cto.com/art/201211/363040.htm
- PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)
定义字符串的时候,用单引号或者双引号都是可以的.我个人习惯是用双引号.在输出字符串的时候,若字符串中含有字符串变量,使用单引号和双引号则是有区别的.如下面程序: 1 2 3 4 5 6 7 8 < ...
- 合并傻子//区间dp
P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...
- TCL语言笔记:TCL中的数组
一.介绍 Tcl 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念.数组的存取速度要比列表有优势,数组在内部使用散列表来存储 ...
- 修改MDI工程主框架窗口标题(修改CREATESTRUCT结构体)
版权声明:本文为博主原创文章,未经博主允许不得转载. //在CMainFrame类的PreCreateWindow函数中加入 m_strTitle = _T("Hello"); c ...
- Photoshop:建议设置
一.新建文档设置: 二.对齐设置 菜单->视图->对齐->全部 使用图层.形状等操作时自动对齐网格,画矢量图不怕模糊边缘,确保每个像素保持清晰. 三.首选项设置 关掉"启用 ...
- WCF入门(三)---WCF与Web服务/Web Service
下面列出了WCF和Web服务之间存在一些重大差异. 属性:WCF服务是通过定义ServiceContract和OperationContract属性,而在Web服务,WebService和WebMet ...