传送门

首先化简原式$$F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)2}-\sum_{i>j}\frac{q_iq_j}{(i-j)2},E_j=F_j/q_j$$

把所有\(q_j\)提出来,则显然$$E_j=\sum_{i<j}\frac{q_i}{(i-j)2}-\sum_{i>j}\frac{q_i}{(i-j)2}$$$$E_j=...-\frac{q_{j-2}}{22}-\frac{q_{j-1}}{12}+0+\frac{q_{j+1}}{12}+\frac{q_{j+2}}{22}...$$

然后设多项式\(A,B\),其中\(A[i]=q_{i+1}(0\le i<n)\)\(,B[i]=\frac{1}{(i-(n-1))|i-(n-1)|}(0\le i<2n-1)(B[n-1]=0)\),然后把\(A,B\)乘起来,答案要求的\(E_i\)也就是多项式的第\(n-2+i\)项的系数

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register using namespace std;
const int N=100000+10,M=550000+10;
const db pi=acos(-1);
il int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct comp
{
db r,i;
comp(){r=i=0;}
comp(db nr,db ni){r=nr,i=ni;}
il comp operator + (const comp &bb) const {return comp(r+bb.r,i+bb.i);}
il comp operator - (const comp &bb) const {return comp(r-bb.r,i-bb.i);}
il comp operator * (const comp &bb) const {return comp(r*bb.r-i*bb.i,r*bb.i+i*bb.r);}
}a[M],b[M];
int n,m,nn,l,rdr[M];
void fft(comp *a,int op)
{
comp W,w,x,y;
for(int i=0;i<nn;++i) if(i<rdr[i]) swap(a[i],a[rdr[i]]);
for(int i=1;i<nn;i<<=1)
{
W=comp(cos(pi/i),sin(pi/i)*op);
for(int j=0;j<nn;j+=i<<1)
{
w=comp(1,0);
for(int k=0;k<i;++k,w=w*W)
{
x=a[j+k],y=w*a[j+k+i];
a[j+k]=x+y,a[j+k+i]=x-y;
}
}
} } int main()
{
n=rd();
for(int i=0;i<n;++i) scanf("%lf",&a[i].r);
m=-1;
for(int i=-n+1;i<=n-1;++i) b[++m].r=1/(db)i/fabs(i);
b[n-1].r=0;
m+=n-1;
for(nn=1;nn<=m;nn<<=1) ++l;
for(int i=0;i<nn;++i) rdr[i]=(rdr[i>>1]>>1)|((i&1)<<(l-1));
fft(a,1),fft(b,1);
for(int i=0;i<nn;++i) a[i]=a[i]*b[i];
fft(a,-1);
for(int i=n-1;i<n+n-1;i++) printf("%.3lf\n",a[i].r/nn);
return 0;
}

luogu P3338 [ZJOI2014]力的更多相关文章

  1. [Luogu P3338] [ZJOI2014]力 (数论 FFT 卷积)

    题面 传送门: 洛咕 BZOJ Solution 写到脑壳疼,我好菜啊 我们来颓柿子吧 \(F_j=\sum_{i<j}\frac{q_i*q_j}{(i-j)^2}-\sum_{i>j} ...

  2. [Luogu]P3338 [ZJOI2014]力(FFT)

    题目描述 给出\(n\)个数\(q_i\),给出\(F_j\)的定义如下: \(F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\fr ...

  3. 洛谷 P3338 [ZJOI2014]力 解题报告

    P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \(F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j ...

  4. [洛谷P3338] [ZJOI2014]力

    洛谷题目链接:P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \[F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_ ...

  5. P3338 [ZJOI2014]力(FFT)

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

  6. P3338 [ZJOI2014]力 /// FFT 公式转化翻转

    题目大意: https://www.luogu.org/problemnew/show/P3338 题解 #include <bits/stdc++.h> #define N 300005 ...

  7. P3338 [ZJOI2014]力

    思路 颓柿子的题目 要求求这样的一个式子 \[ F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2} ...

  8. 洛咕 P3338 [ZJOI2014]力

    好久没写过博客了.. 大力推式子就行了: \(E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}+\sum_{j>i}\frac{q_j}{(j-i)^2}\) 那么要转化 ...

  9. 洛谷P3338 [ZJOI2014]力(FFT)

    传送门 题目要求$$E_i=\frac{F_i}{q_i}=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^n\frac{q_j}{(j-i)^2}$ ...

随机推荐

  1. Dockerfile技巧

    换镜像源 Ubuntu RUN sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list A ...

  2. 利用twilio进行手机短信验证

    首先要注册 twilio 账号但是由于twilio人机验证用的是Goole所有注册需要FQ 完成后去免费获取15元使用 然后 pip install twilio 注册完成后会在个人首页显示你的免费金 ...

  3. 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest

    https://codeforces.com/gym/101981 Problem A. Adrien and Austin 贪心,注意细节 f[x]=1:先手必赢. f[x]: 分成两部分(或一部分 ...

  4. C和 C++的特点

    C语言进化到C++ 的过程,是一个障眼法的发展过程.1. bool型变量:1个字节变量(和char一样大小),缺省赋值为true(1),false(0)2. 引用型变量:让新申请的变量挂在原有同类型的 ...

  5. java 集合的总结

    集合大致可以分为两类: 一类继承Collection接口,存储的是多个孤立的元素,包括List和set: List包括ArrayList类和LinkedList类,ArrayList数组的顺序存储,而 ...

  6. noi.openjudge 1.13.44

    http://noi.openjudge.cn/ch0113/44/ 总时间限制:  1000ms 内存限制:  65536kB 描述 将 p 进制 n 转换为 q 进制.p 和 q 的取值范围为[2 ...

  7. RabbitMQ 消费者的消息确认机制

    消息确认的几点说明: 1. Basic.Ack 发回给 RabbitMQ 以告知,可以将相应 message 从 RabbitMQ 的消息缓存中移除.2. Basic.Ack 未被 consumer ...

  8. python自动化开发-[第十五天]-jquery

    今日概要 1.javascript补充 2.jquery 1.javascript-DOM绑定事件 1.事件类型 onclick 当用户点击某个对象时调用的事件句柄. ondblclick 当用户双击 ...

  9. hibernate注解方式来处理映射关系

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...

  10. JAVA-Proxy 代理

    jdk静态代理 interface Dao { void save(); } class DaoImpl implements Dao { @Override public void save() { ...