传送门

解析

算是比较适合的FFT入门题了吧
一个重要的trick:
当函数无法表示成卷积时,可以把函数翻转过来
然后调一调就又是卷积了
一个重要的注意事项是FFT的lim一定是两多项式相乘结果多项式的项数
即使后面的项根本没有用也一样
其他的比较简单了
注意下精度即可

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
const int N=1e6+100;
const int M=150;
const int mod=998244353;
const double pi=acos(-1.0);
inline ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,m,lim,k;
struct node{double x,y;node(double a=0,double b=0){x=a;y=b;}
}A[N],B[N],C[N];
il node operator * (node a,node b){return (node){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};
}
il node operator + (node a,node b){return (node){a.x+b.x,a.y+b.y};
}
il node operator - (node a,node b){return (node){a.x-b.x,a.y-b.y};
}
int r[N];
il void fft(node *x,int lim,int flag){for(int i=0;i<=lim;i++){if(i<r[i]) swap(x[i],x[r[i]]);}for(int l=1;l<lim;l<<=1){node o(cos(pi/l),flag*sin(pi/l));for(int st=0;st<=lim;st+=l<<1){node t(1,0);for(int j=0;j<l;j++,t=t*o){node u=x[st+j],v=t*x[st+j+l];x[st+j]=u+v;x[st+j+l]=u-v;}}}return;
}
int main(){n=read();for(int i=1;i<=n;i++){scanf("%lf",&A[i].x);B[i].x=(double)(1.0/i/i);C[n-i].x=A[i].x;}int L=0,lim=1;while(lim<=n<<1){lim<<=1;L++;}for(int i=1;i<=lim;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(L-1));fft(A,lim,1);fft(B,lim,1);fft(C,lim,1);for(int i=0;i<=lim;i++){A[i]=A[i]*B[i];C[i]=C[i]*B[i];}fft(A,lim,-1);fft(C,lim,-1);for(int i=1;i<=n;i++) printf("%lf\n",(A[i].x-C[n-i].x)/lim);return 0;
}
/**/

洛谷P3338:力(FFT)相关推荐

  1. 洛谷 P3338【FFT】

    Solution 首先化简 Ej\sf E_jEj​ 得到 Ej=Fjqj=∑i=1j−1qi×qj(i−j)2−∑i=j+1nqi×qj(i−j)2qj\Large E_j = \dfrac{F_j ...

  2. 洛谷P3338 力

    题意: 解: 介绍两种方法. 首先可以把那个最后除的qi拆掉. ①分前后两部分处理. 前一部分可以看做是个卷积.下面的平方不拆开,直接看成gi-j即可. 后一部分按照套路,把循环变量改成从0开始,反转 ...

  3. 洛谷 [P3338] 力

    FFT \[E_i = F_i / q_i = \sum_{i<j} \frac {q_j} {(i - j)^2} - \sum _{ i > j} \frac{q _ j} {(i - ...

  4. 洛谷 P3338线性筛质数

    洛谷 P3383线性筛质数 思路 一个亿的数据用埃氏筛法都过不去,只能用线性筛法: 另外就是一定要用scanf与printf,不然超时 Code #include<iostream> #i ...

  5. 【洛谷P3338】力

    题目大意:求 \[ E_{j}=\sum_{i<j} \frac{q_{i}}{(i-j)^{2}}-\sum_{i>j} \frac{q_{i}}{(i-j)^{2}} \] 题解:可以 ...

  6. 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)

    题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一 ...

  7. 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】

    [洛谷 P1919] [模板]A*B Problem升级版 题目大意 给你两个超大整数 a,ba,ba,b,问 a∗ba*ba∗b 其中 a,b≤101000000a,b\leq10^{1000000 ...

  8. 洛谷P5488 | FFT+生成函数+二项式定理

    前言 因为最近在学习生成函数和多项式有关的内容,很多这方面的东西也不是很懂,所以很多地方可能讲得不好或者是不清楚还请读者们见谅. 那么关于这道题呢,它是我前段时间刚学生成函数时见过的题目.当时由于是刚 ...

  9. 洛谷 P4245 【模板】任意模数NTT

    洛谷 P4245 [模板]任意模数NTT 贴个板子,4次DFT. Code #include<cstdio> #include<algorithm> #include<c ...

最新文章

  1. 前端开发工程师如何在新的一年里提升自己
  2. Caffe代码导读(1):Protobuf例子
  3. java接收uniapp上传的图片_uni-app 上传图片的坑
  4. JavaScript 图片的上传前预览
  5. PHP中stripslashes()函数的解释
  6. 苹果第二代自研M系列芯片MacBook Pro有望在未来几周上市
  7. Give root password for maintenance(or type control -D to continue)
  8. mongodb官网文档阅读笔记:write concern
  9. EditPlus v2.20 Build 205
  10. IDEA打包jar包并运行
  11. 未知错误,可能由于拨号连接未创建成功
  12. 青云mysql_青云分布式数据库RadonDB 深度兼容MySQL
  13. 去除IE自带的输入框清除按钮
  14. Facial Expression Recognition based on a multi-task global-local network--论文笔记
  15. canvas画圆环(一)之渐变色,纯色
  16. 200PLC 一次FOR循环获取最大值、最小值
  17. 消息重复的处理---幂等性浅谈
  18. C++ Windows Hook 消息钩子 详解
  19. 智慧城市建设快速发展 难题颇多亟待解决
  20. 潮流课设matlab编程,毕业设计- 配电网潮流计算方法分析与实现(附带matlab源程序)...

热门文章

  1. 干货|吴恩达Coursera课程教你学习神经网络!
  2. 学习总结之数据挖掘三大类六分项
  3. 11没有源码注释_我们为什么要看源码、应该如何看源码?
  4. python中with as用法_python 中关于with...as的用法
  5. linux 编写脚本示范,Linux-scripts-简单脚本和脚本的执行
  6. 程序员吐槽_产品经理吐槽大会,程序员勿入
  7. 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析
  8. 量子计算机设计理念和思路,课程的设计理念与思路
  9. arcgis xml 下载 切片_GIS开发:Arcgis的切片格式
  10. access 战地1不加入ea_炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂...