了解到了FFT求卷积,但是还是感性的认识。。

取反就可以了。输出一定要加int!!!!

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const double pi=acos(-1.0);struct Complex
{double r,i;Complex(){}Complex(double _r,double _i){r=_r, i=_i;}friend Complex operator +(Complex x,Complex y){return Complex(x.r+y.r,x.i+y.i);}friend Complex operator -(Complex x,Complex y){return Complex(x.r-y.r,x.i-y.i);}friend Complex operator *(Complex x,Complex y){return Complex(x.r*y.r-x.i*y.i,x.r*y.i+x.i*y.r);}
}A[410000],B[410000],C[410000];int R[410000];
void fft(Complex *a,int n,int op)
{for(int i=0;i<n;i++)if(i<R[i])swap(a[i],a[R[i]]);for(int i=1;i<n;i*=2){Complex wn(cos(pi/i),sin(pi*op/i));for(int j=0;j<n;j+=(i<<1)){Complex w(1,0);for(int k=0;k<i;k++,w=w*wn){Complex a1=a[j+k],a2=a[j+k+i];a[j+k]  =a1+w*a2;a[j+k+i]=a1-w*a2;}}}if(op==-1)for(int i=0;i<n;i++)a[i].r/=n;
}
int main()
{int n,m,L=0;scanf("%d",&m);m--;for(int i=0;i<=m;i++)scanf("%lf%lf",&A[i].r,&B[m-i].r);m*=2;for(n=1;n<=m;n*=2)L++;for(int i=0;i<n;i++)R[i]=( R[i>>1]>>1 )|( (i&1) << (L-1) );fft(A,n,1);fft(B,n,1);for(int i=0;i<n;i++)C[i]=A[i]*B[i];fft(C,n,-1);for(int i=m/2;i<=m;i++)printf("%d\n",int(C[i].r+0.5));return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/7976703.html

bzoj2194: 快速傅立叶之二相关推荐

  1. bzoj2194 快速傅立叶之二

    2194: 快速傅立叶之二 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 1730  Solved: 1026 [Submit][Status][D ...

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

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

  3. BZOJ-2194 快速傅立叶之二

    FFT模版题. 观察题目,我们可以发现,只要把序列b倒过来,再联想一下乘法运算... 我们会发现,将序列a和序列b当作100进制数,做一次乘法,然后从低到高每一位便是答案了(乘完无需进位) #incl ...

  4. 解题报告(二)C、(darkBZOJ 2194) 快速傅立叶之二(FFT、卷积的概念、常用变换)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  5. [BZOJ]2194: 快速傅立叶之二

    题目大意:给定序列a,b,求序列c满足c[k]=sigma(a[i]*b[i-k]) (k<=i<n).(n<=10^5) 思路:观察发现就是普通的卷积反一反(翻转ab其中一个后做卷 ...

  6. BZOJ_2194_快速傅立叶之二_(FFT+卷积)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2194 给出序列\(a[0],a[1],...,a[n-1]\)和\(b[0],b[1],... ...

  7. 【刷题】BZOJ 2194 快速傅立叶之二

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

  8. bzoj 2194 快速傅立叶之二

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2194 因为卷积的第 k 项是 sigma(i=0~k)a[ i ]*b[ k-i ] ,也就 ...

  9. c语言二维图像傅立叶变换,C语言数据结构算法之实现快速傅立叶变换.pdf

    C语语言言数数据据结结构构算算法法之之实实现现快快速速傅傅立立叶叶变变换换 C语语言言数数据据结结构构算算法法之之实实现现快快速速傅傅立立叶叶变变换换 本实例将实现二维快速傅立叶变换,同时也将借此实例 ...

最新文章

  1. K单体型重建算法的研究
  2. Science:最新发现哈希可能是大脑的通用计算原理!
  3. SQL取出每个产品的Top n 条记录
  4. asp.net2.0中通过CS代码来动态的指定aspx页面中head中的信息
  5. Get Set的问题解决
  6. pg_restore - 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。
  7. 学习笔记草稿版——体绘制中的光学模型
  8. 跨境电商独立站门槛高,为什么还有无数人挤破头想入坑!
  9. Zabbix部署(一)
  10. react 项目实战(二)创建 用户添加 页面 及 fetch请求 json-server db.json -w -p 8000...
  11. 浅析C++开发工程师的高薪就业方向
  12. 大连芒果云计算机,芒果网manGO怎么样
  13. 建筑施工企业工程项目成本管理软件
  14. cubieboard2 android,cubieboard2双卡版系统安装指南_android.pdf
  15. COSO企业风险管理综合框架主要关注8大层面的企业风险
  16. [基础]-向量点乘和叉乘
  17. rxswift_RxSwift
  18. WireShark全版本下载
  19. 提高自控力的七个秘诀
  20. Android 指引蒙版的实现

热门文章

  1. python 语料_语料访问
  2. arduino nano 蓝牙_用Arduino玩转掌控板(ESP32):ESP32概述与Arduino软件准备
  3. java instanceof 原理_java-在现代JVM实现中如何实现instanceof?
  4. java开发面试复试_java开发实习生面试经历
  5. 网络宣传推广教大家网站的过期页面更合理的处理方法
  6. 浅析企业网站如何选择合适的网站空间
  7. 电力职称计算机多选,【2017年整理】职称计算机考试Office多选模拟题及答案.doc...
  8. python 协程_Python 协程与 Go 协程的区别(一)
  9. 虚拟化服务器端口用万兆,万兆以太网部署需要注意的方面有哪些
  10. 昆明二级计算机考试报名时间2015,4月15日开始网上报名!云南省2021年上半年中小学教师资格考试(面试)安排来了——昆明广播电视台...