Description

给出n个数qi,给出Fj的定义如下:
令Ei=Fi/qi,求Ei.

Input

第一行一个整数n。
接下来n行每行输入一个数,第i行表示qi。
n≤100000,0<qi<1000000000

Output

n行,第i行输出Ei。与标准答案误差不超过1e-2即可。

Sample Input

5
4006373.885184
15375036.435759
1717456.469144
8514941.004912
1410681.345880

Sample Output

-16838672.693
3439.793
7509018.566
4595686.886
10903040.872

Solution

不会markdown/LaTeX的下场就是只能像我一样在word里编辑好然后粘图

Code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 #define N (400000+100)
 6 using namespace std;
 7
 8 double pi=acos(-1.0);
 9 double q[N],g[N],ans[N];
10 int n,fn,l,r[N];
11 struct complex
12 {
13     double x,y;
14     complex(double xx=0,double yy=0)
15     {
16         x=xx; y=yy;
17     }
18 }a[N],b[N];
19
20 complex operator + (complex a,complex b){return complex(a.x+b.x,a.y+b.y);}
21 complex operator - (complex a,complex b){return complex(a.x-b.x,a.y-b.y);}
22 complex operator * (complex a,complex b){return complex(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
23 complex operator / (complex a,double b){return complex(a.x/b,a.y/b);}
24
25 void FFT(int n,complex *a,int opt)
26 {
27     for (int i=0; i<n; ++i)
28         if (i<r[i])
29             swap(a[i],a[r[i]]);
30     for (int k=1; k<n; k<<=1)
31     {
32         complex wn=complex(cos(pi/k),opt*sin(pi/k));
33         for (int i=0; i<n; i+=(k<<1))
34         {
35             complex w=complex(1,0);
36             for (int j=0; j<k; ++j,w=w*wn)
37             {
38                 complex x=a[i+j], y=w*a[i+j+k];
39                 a[i+j]=x+y; a[i+j+k]=x-y;
40             }
41         }
42     }
43     if (opt==-1) for (int i=0; i<n; ++i) a[i]=a[i]/n;
44 }
45
46 void Calc()
47 {
48     memset(a,0,sizeof(a)); memset(b,0,sizeof(b));
49     for (int i=0; i<=n; ++i) a[i].x=q[i];
50     for (int i=0; i<=n; ++i) b[i].x=g[i];
51     FFT(fn,a,1); FFT(fn,b,1);
52     for (int i=0; i<=fn; ++i)
53         a[i]=a[i]*b[i];
54     FFT(fn,a,-1);
55 }
56
57 int main()
58 {
59     scanf("%d",&n);
60     for (int i=1; i<=n; ++i)
61         scanf("%lf",&q[i]);
62     for (int i=1; i<=n; ++i)
63         g[i]=1.0/i/i;
64     fn=1;
65     while (fn<=n+n) fn<<=1, l++;
66     for (int i=0; i<fn; ++i)
67         r[i]=(r[i>>1]>>1) | ((i&1)<<(l-1));
68
69     Calc();
70     for (int i=1; i<=n; ++i)
71         ans[i]=a[i].x;
72     for (int i=1; i<=n/2; ++i)
73         swap(q[i],q[n-i+1]);
74     Calc();
75     for (int i=1; i<=n; ++i)
76         printf("%.6lf\n",ans[i]-a[n-i+1].x);
77 }

转载于:https://www.cnblogs.com/refun/p/8853475.html

BZOJ3527:[ZJOI2014]力(FFT)相关推荐

  1. BZOJ3527: [Zjoi2014]力 [FFT]

    化简之后,发现减号左边的式子是一个卷积.右边的式子,把一个函数倒序就是卷积,分别FFT,求解答案. 大佬blog: https://blog.csdn.net/kyleyoung_ymj/articl ...

  2. bzoj3527: [Zjoi2014]力 fft

    题意:求\(E_i=\sum_{j=1}^{i-1}qj/{(i-j)^2}-\sum_{j=i+1}^{n}qj/{(i-j)^2}\) 题解:构造前几个Ei,可以发现\(E_i=a_i*b_{j- ...

  3. BZOJ3527: [Zjoi2014]力

    BZOJ3527: [Zjoi2014]力 Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行 ...

  4. P3338 [ZJOI2014]力 FFT + 推式子

    传送门 文章目录 题意: 思路: 题意: 思路: 这个式子看起来很FFTFFTFFT,让我们来化简一下. 考虑EEE中直接将qiq_iqi​约掉,所以Ei=∑j=1i−1qj(i−j)2−∑j=i+1 ...

  5. P3338 [ZJOI2014]力 [FFT]

    P3338[ZJOI2014]力P3338 [ZJOI2014]力P3338[ZJOI2014]力 给出n个数qi,给出Fj的定义如下: Fj=∑i<jqiqj(i−j)2−∑i>jqiq ...

  6. 【ZJOI2014】【BZOJ3527】 力 (FFT)

    Description 给出序列 {qi} \{q_i\},求 Ei=∑j<iqj(i−j)2−∑j>iqj(i−j)2 E_i = \sum_{ji}\frac{q_j}{(i-j)^2 ...

  7. [bzoj3527][Zjoi2014]力

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给定n(n<=100000)个数qi 求Ei=Fi/qi 题解:首先约去所有的qi,然后就是一个卷积了,Ai=qi,Bi=1/i^2搞一 ...

  8. BZOJ.3527.[ZJOI2014]力(FFT)

    题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...

  9. bzoj 3527 [Zjoi2014]力——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...

最新文章

  1. webpack基础概念
  2. 超级史诗灯光人舞蹈,神作!
  3. C++ STL标准模板库(queue)
  4. vscode取消底部横滚动条(自动换行)
  5. 进程和线程的区别【转】
  6. 联调测试是什么意思_功能模块提测前注意这几件事,再也不怕被测试diss了
  7. 一个资深系统管理员的O2O实践(引子)
  8. 本地html如何导出pdf,html表格以pdf格式导出到本地
  9. mybatis-generator 根据表生成对应文件
  10. unity, itween 对不透明对象使用FadeTo需要先更换material
  11. c语言转换绝对值函数的程序,c语言abs(c语言求绝对值的程序)
  12. 二极管的工作原理,什么是二极管?
  13. Win10 安装NASM
  14. IMX6ULL与IMX6UL异同(主要是优化了其成本:安全功能减低,优化功耗EMC SIM模块删除等与但和I.MX6UltraLite芯片是PIN-2-PIN兼容的)
  15. 电脑控制手机,无需Root、无线连接,免费开源跨平台的scrcpy比其他收费软件还好用!
  16. JIRA-使用教程_界面_创建、方案配置
  17. 平面设计面试官常问的问题有哪些?
  18. 2021西部云安全峰会召开:“云安全优才计划”发布,腾讯云安全攻防矩阵亮相
  19. [读书笔记]Core Java: Volume I - Fundamentals Chapter 8
  20. 小梅哥FPGA:基于线性序列机的TLC5620型DAC驱动设计

热门文章

  1. 无失真压缩法可以减少冗余_机考样题(选择题带标准答案).docx
  2. 微信小程序 全局变量异步函数_微信小程序制作简述
  3. python可变序列_python序列中可变数据类型有什么
  4. oracle的have,Does oracle have “auto number” data type [duplicate]
  5. 制作mac系统安装U盘
  6. wireshark1.8捕获无线网卡的数据包——找不到无线网卡!
  7. HDOJ 1247 HDU 1247 Hat’s Words ACM 1247 IN HDU
  8. SharePoint2010内容类型剖析(四)
  9. 关于opencv中Mat赋值(浅拷贝,深拷贝)原理
  10. 图像处理的傅里叶变换理解