BZOJ 2194 FFT
来源:互联网 发布:老司机软件排行 编辑:程序博客网 时间:2024/06/02 04:35
思路:
题目中给的是差值一定的
那么就把b数组倒一下 不就变成 i+j=k(k为定值的了嘛)
嗯 然后搞个FFT
//By SiriusRen#include <cstdio>#include <complex>using namespace std;typedef complex<double> cplxd;const int N=270000;const double pi=acos(-1);int n,m,R[N],L;cplxd a[N],b[N];char ch[N];void FFT(cplxd *a,int f){ for(int i=0;i<n;i++)if(i<R[i])swap(a[i],a[R[i]]); for(int i=1;i<n;i<<=1){ cplxd wn(cos(pi/i),f*sin(pi/i)); for(int j=0;j<n;j+=(i<<1)){ cplxd w(1,0); for(int k=0;k<i;k++,w*=wn){ cplxd x=a[j+k],y=w*a[j+k+i]; a[j+k]=x+y,a[j+k+i]=x-y; } } } if(f==-1)for(int i=0;i<n;i++)a[i]/=n;}int main(){ scanf("%d",&n),n--,m=2*n; for(int i=0;i<=n;i++)scanf("%lf%lf",&a[i].real(),&b[n-i].real()); for(n=1;n<=m;n<<=1)L++; for(int i=0;i<n;i++)R[i]=(R[i>>1]>>1)|((i&1)<<(L-1)); FFT(a,1),FFT(b,1); for(int i=0;i<n;i++)a[i]=a[i]*b[i]; FFT(a,-1); for(int i=m/2;i<=m;i++)printf("%d\n",(int)(a[i].real()+0.1));}
0 0
- BZOJ 2194 FFT
- BZOJ 2194(快速傅立叶之二-FFT)
- 【BZOJ 2194】 快速傅立叶之二|FFT
- BZOJ 2194 快速傅立叶之二 FFT
- bzoj 2194: 快速傅立叶之二 fft
- 【bzoj 2179】FFT
- BZOJ 2179 [FFT]
- BZOJ 2179 FFT模板
- BZOJ 3160 FFT+Manacher
- BZOJ 4259 [FFT]
- bzoj 4827 礼物(fft)
- [BZOJ 2194] 快速傅立叶之二 · FFT
- bzoj 2194: 快速傅立叶之二 (FFT)
- 【bzoj 2194】快速傅立叶之二(FFT)
- BZOJ 2179 FFT快速傅立叶 FFT
- 【BZOJ 2179】【FFT模板】 FFT快速傅立叶
- BZOJ 2179(FFT快速傅立叶-FFT)
- 【BZOJ 2179】 FFT快速傅立叶|FFT
- 在谷歌地球中找到泰坦尼克号
- Lightoj - 1017 - Brush (III) 详解(经典线性DP)
- HDU 4609 FFT+各种分类讨论
- CSS3-文本模型
- -
- BZOJ 2194 FFT
- 深入理解ListView(2) — 一天一点源码
- MySQL安装+Navicat11注册机破解
- COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)
- CentOS 7.x设置自定义开机启动,添加自定义系统服务
- Cuda 学习教程一:GPU并行计算介绍
- ubuntu16.04 lamp webserver 服务器搭建
- HDU1078 FatMouse and Cheese(DFS记忆化搜索)
- 出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的解决方法