bzoj 3527 [Zjoi2014]力——FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527
把 q[ i ] 除掉。设 g[ i ] = i^2 ,有一半的式子就变成卷积了;另一半只要翻转一下序列就也变成卷积了。
g[ i ] 那个部分FFT过一次之后就不用再FFT了。
注意别在主函数里把全局变量的 len 覆盖了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define db double #define ll long long using namespace std; const int N=1e5+5,M=N<<2; const db pi=acos(-1); int n,len,r[M]; db f[N],g[N],ans[N]; struct cpl{db x,y;}a[M],b[M],I; cpl operator+ (cpl a,cpl b){return (cpl){a.x+b.x,a.y+b.y};} cpl operator- (cpl a,cpl b){return (cpl){a.x-b.x,a.y-b.y};} cpl operator* (cpl a,cpl b){return (cpl){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};} void fft(cpl *a,bool fx) {for(int i=0;i<len;i++)if(i<r[i])swap(a[i],a[r[i]]);for(int R=2;R<=len;R<<=1){int m=R>>1;cpl Wn=(cpl){ cos(pi/m),fx?-sin(pi/m):sin(pi/m) };for(int i=0;i<len;i+=R){cpl w=I;for(int j=0;j<m;j++,w=w*Wn){cpl tmp=w*a[i+m+j];a[i+m+j]=a[i+j]-tmp;a[i+j]=a[i+j]+tmp;}}} } int main() {scanf("%d",&n); I.x=1;for(int i=0;i<n;i++)scanf("%lf",&f[i]);for(int i=1;i<n;i++)g[i]=(db)1/i/i;for(int i=0;i<n;i++)a[i].x=f[i],b[i].x=g[i];len=1;//do not 'int len'!!!!!for(;len<=n<<1;len<<=1);for(int i=0;i<len;i++)r[i]=(r[i>>1]>>1)+((i&1)?len>>1:0);fft(a,0); fft(b,0);for(int i=0;i<len;i++)a[i]=a[i]*b[i];fft(a,1);for(int i=0;i<n;i++) ans[i]=a[i].x/len;// /len!!!for(int i=0;i<len;i++) a[i].x=a[i].y=0;for(int i=0;i<n;i++) a[i].x=f[n-1-i];fft(a,0);for(int i=0;i<len;i++) a[i]=a[i]*b[i];fft(a,1);for(int i=0;i<n;i++){ans[i]-=a[n-1-i].x/len;printf("%.3f\n",ans[i]);}return 0; }
转载于:https://www.cnblogs.com/Narh/p/10023116.html
bzoj 3527 [Zjoi2014]力——FFT相关推荐
- BZOJ.3527.[ZJOI2014]力(FFT)
题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...
- BZOJ 3527: [ZJOI2014]力(FFT)
题意 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \frac{q_iq_j}{(i-j)^2}-\sum \limi ...
- 数学(FFT):BZOJ 3527 [Zjoi2014]力
题目在这里:http://wenku.baidu.com/link?url=X4j8NM14MMYo8Q7uPE7-7GjO2_TXnMFA2azEbBh4pDf7HCENM3-hPEl4mzoe2w ...
- BZOJ 3527: [Zjoi2014]力
题目地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题目大意:见原题. 算法讨论: 设A[i]=q[i],B[i]=1/(i^2). 设 ...
- BZOJ 3527 [Zjoi2014] 力
Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...
- P3338 [ZJOI2014]力 FFT + 推式子
传送门 文章目录 题意: 思路: 题意: 思路: 这个式子看起来很FFTFFTFFT,让我们来化简一下. 考虑EEE中直接将qiq_iqi约掉,所以Ei=∑j=1i−1qj(i−j)2−∑j=i+1 ...
- P3338 [ZJOI2014]力 [FFT]
P3338[ZJOI2014]力P3338 [ZJOI2014]力P3338[ZJOI2014]力 给出n个数qi,给出Fj的定义如下: Fj=∑i<jqiqj(i−j)2−∑i>jqiq ...
- 【BZOJ】3527: [Zjoi2014]力(fft+卷积)
http://www.lydsy.com/JudgeOnline/problem.php?id=3527 好好的一道模板题,我自己被自己坑了好久.. 首先题目看错.......什么玩意.......首 ...
- BZOJ3527:[ZJOI2014]力(FFT)
Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...
最新文章
- 拉格朗日乘数法的原理,我用10幅图把它讲清楚了
- MySQL基础篇:用户和权限管理
- Mac 安装HomeBrew 出错
- POJ 1696 Space Ant(极角排序)【计算几何】
- JeePlus左树右表之 表单【右表】自动获取列表【左树 】中的id
- 快速幂、矩阵快速幂、快速乘法
- linux 开源邮件 系统,4 个开源的命令行邮件客户端
- 动画库Animate.css
- 一直跳出来 visual_只练开合跳一个动作,会瘦吗?
- python的numpy库结构_NumPy构成了数据科学领域中许多Python库的基础。
- 利用linux打造工科男的办公娱乐利器 ——以centos为例
- ckfinder php 漏洞,编辑器漏洞
- 玩qq游戏提示计算机内存不足,win10系统玩游戏提示“计算机内存不足”怎么办...
- Windows下使用Git+rsync构建文件同步工具
- 程序员需要知道的97件事情之 ------- 谋定而后动
- 实验3:利用SVM实现线性高斯分类
- MOS管的finger和multiplier
- 脆弱性和安全风险分析
- 原生JS实现动态返回顶部
- HTML制作宣传片,如何制作一部好的宣传片