bzoj3527: [Zjoi2014]力 fft

链接

bzoj

思路



但是我们求得是

\(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}-\sum_{i>j}\frac{q_i}{(i-j)^2}\)

\(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}\)

\(\sum\limits _{i=1}^{j-1} q_i*\frac{1}{(j-i)^2}\)

fft都能算出来

\(\sum\limits _{i=j+1}^{n} q_i*\frac{1}{(i-j)^2}\)

翻转一下fft

具体细节具体看

代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=4e5+7;
const double Pi=acos(-1.0);
int n,l,limit=1,r[N];
struct Complex {
double x,y;
Complex(double xx=0,double yy=0) {x=xx,y=yy;}
}a[N],b[N],c[N];
Complex operator + (Complex a,Complex b) {return Complex(a.x+b.x,a.y+b.y);}
Complex operator - (Complex a,Complex b) {return Complex(a.x-b.x,a.y-b.y);}
Complex operator * (Complex a,Complex b) {return Complex(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
void fft(Complex *a,int type) {
for(int i=0;i<limit;++i)
if(i<r[i]) swap(a[i],a[r[i]]);
for(int mid=1;mid<limit;mid<<=1) {
Complex Wn(cos(Pi/mid),type*sin(Pi/mid));
for(int i=0;i<limit;i+=(mid<<1)) {
Complex w(1,0);
for(int j=0;j<mid;++j,w=w*Wn) {
Complex x=a[i+j],y=w*a[i+j+mid];
a[i+j]=x+y;
a[i+j+mid]=x-y;
}
}
}
}
int main() {
scanf("%d",&n);
n--;
for(int i=0;i<=n;++i) scanf("%lf",&a[i].x);
for(int i=1;i<=n;++i) c[n-i].x=b[i].x=1.0/i/i;
while(limit<=n+n) limit<<=1,l++;
for(int i=0;i<=limit;++i)
r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
fft(a,1),fft(b,1),fft(c,1);
for(int i=0;i<=limit;++i) b[i]=a[i]*b[i];
for(int i=0;i<=limit;++i) c[i]=a[i]*c[i];
fft(b,-1),fft(c,-1);
for(int i=0;i<=limit;++i) b[i].x/=limit;
for(int i=0;i<=limit;++i) c[i].x/=limit;
for(int i=0;i<=n;++i) printf("%.3lf\n",b[i].x-c[n+i].x);
return 0;
}

bzoj3527: [Zjoi2014]力 fft的更多相关文章

  1. [BZOJ3527][ZJOI2014]力 FFT+数学

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 首先卷积的形式是$h(i)=\sum_{i=0}^jf(i)g(i-j)$,如果我们 ...

  2. BZOJ3527[Zjoi2014]力——FFT

    题目描述 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. 输入 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi<100000 ...

  3. [bzoj3527][Zjoi2014]力_FFT

    力 bzoj-3527 Zjoi-2014 题目大意:给定长度为$n$的$q$序列,定义$F_i=\sum\limits_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum\lim ...

  4. 【BZOJ-3527】力 FFT

    3527: [Zjoi2014]力 Time Limit: 30 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 1544  Solved: 89 ...

  5. 【BZOJ】3527: [Zjoi2014]力 FFT

    [参考]「ZJOI2014」力 - FFT by menci [算法]FFT处理卷积 [题解]将式子代入后,化为Ej=Aj-Bj. Aj=Σqi*[1/(i-j)^2],i=1~j-1. 令f(i)= ...

  6. P3338 [ZJOI2014]力(FFT)

    题目 P3338 [ZJOI2014]力 做法 普通卷积形式为:\(c_k=\sum\limits_{i=1}^ka_ib_{k-i}\) 其实一般我们都是用\(i=0\)开始的,但这题比较特殊,忽略 ...

  7. 【bzoj3527】[Zjoi2014]力 FFT

    2016-06-01  21:36:44 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 我就是一个大傻叉 微笑脸 #include&l ...

  8. bzoj3527: [Zjoi2014]力 卷积+FFT

    先写个简要题解:本来去桂林前就想速成一下FFT的,结果一直没有速成成功,然后这几天断断续续看了下,感觉可以写一个简单一点的题了,于是就拿这个题来写,之前式子看着别人的题解都不太推的对,然后早上6点多推 ...

  9. 2019.02.28 bzoj3527: [Zjoi2014]力(fft)

    传送门 fftfftfft菜题. 题意简述:给一个数列aia_iai​,对于i=1→ni=1\rightarrow ni=1→n求出ansi=∑i<jai(i−j)2−∑i>jai(i−j ...

随机推荐

  1. nginx域名跳转到www下

  2. (2.1)mysql升级与降级

    (2.1)mysql升级与降级 转自:深入浅出mysql数据库开发.优化与管理第二版 1.mysql升级 2.mysql降级

  3. 前端 CSS 注释

    /*开头 */ 结尾 /*这是注释*/ <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. P3803 【模板】多项式乘法(FFT)

    传送门: 参考博客 1:大佬  attack 参考博客 2:大佬  胡小兔 在这里再膜拜一下这两位大佬 Orz%%% #include<iostream> #include<cstd ...

  5. Schlumberger Petrel 2016.3 地震解释 油藏模拟

    Schlumberger Petrel 2016.3 地震解释 油藏模拟世界上顶尖的三维地质建模软件,软件为用户提供的工具可以用于地震解释.地质建模.油藏数 值模拟等方面的使用,清晰的地质模型可以描述 ...

  6. MFC 对话框不显示,返回-1 原因

    DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...

  7. word_freq

    1) 博客开头给出自己的基本信息,格式建议如下: 学号:2017*****7193(保留前4位和后4位,中间用星号代替,避免泄露个人信息): 姓名:刘新飞,用你的真实姓名替代 我的码云仓库地址:[ht ...

  8. springMVC--annotation

    一 解析类 ComponentScanBeanDefinitionParser component-scan标签解析类 component-scan 兼容 annotation-config ,因此前 ...

  9. CASE WHEN 及 SELECT CASE WHEN的用法

    CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WH ...

  10. hibernate一级缓存及对象的状态

    hibernate中实体类对象的状态 在hibernate中实体类对象有三种状态 (1)瞬时态(临时态) 瞬时态:即我们自己创建一个对象,还没有保存到数据库就叫临时态,其实也可以说是对像没有id值,跟 ...