[题解]bzoj3527(ZJOI2014)力
2017-02-26 17:06
253 查看
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
54006373.885184
15375036.435759
1717456.469144
8514941.004912
1410681.345880
Sample Output
-16838672.6933439.793
7509018.566
4595686.886
10903040.872
Solution
我们设A[i]=q[i],B[i]=1/(i^2)。(数组下标为0~n-1)设C[i]=sigma(A[j]*B[i-j]),D[i]=sigma(A[n-j-1]*B[i-j])。
这样,我们要求的E[i]=C[i]-D[n-i-1];
不难看出C是标准的卷积形式,直接FFT搞一遍即可。然后我们可以把A反转过来,即A’[i]=A[n-i+1],然后D[i]=sigama(A’[j]*B[i-j]),这样D也是标准的卷积的形式了,再来一遍FFT就可以了。
代码:
#include<cstdio> #include<cmath> #include<cstring> #include<complex> #include<algorithm> using namespace std; #define pi acos(-1) typedef complex<double> E; const int maxn=500010; E a[maxn],b[maxn],c[maxn],d[maxn]; double q[maxn]; int n,m,last; void fft(E *x,int len,int type){ if(len 4000 ==1)return; E l[len>>1],r[len>>1]; for(int i=0;i<len;i+=2){ l[i>>1]=x[i]; r[i>>1]=x[i+1]; } fft(l,len>>1,type);fft(r,len>>1,type); E wn(cos(2*pi/len),sin(type*2*pi/len)),w(1,0),t; for(int i=0;i<(len>>1);i++,w*=wn){ t=w*r[i];x[i]=l[i]+t; x[i+(len>>1)]=l[i]-t; } } int main(){ scanf("%d",&n);last=n; m=(n<<1); for(n=1;n<=m;n<<=1); for(int i=0;i<last;i++){ scanf("%lf",&q[i]); a[i]=E(q[i],0); } for(int i=1;i<last;i++){ b[i]=E(1.0/i/i,0); } fft(a,n,1);fft(b,n,1); for(int i=0;i<=n;i++){ c[i]=a[i]*b[i]; } fft(c,n,-1); memset(a,0,sizeof a); for(int i=0;i<last;i++){ a[i]=E(q[last-i-1],0); } fft(a,n,1); for(int i=0;i<=n;i++){ d[i]=a[i]*b[i]; } fft(d,n,-1); for(int i=0;i<last;i++){ printf("%.3lf\n",(c[i].real()-d[last-i-1].real())/n); } return 0; }
相关文章推荐
- BZOJ3527:[ZJOI2014]力——题解
- 【FFT】BZOJ3527(Zjoi2014)[力]题解
- [FFT] BZOJ3527: [Zjoi2014]力
- BZOJ3527 [Zjoi2014]力
- bzoj3527: [Zjoi2014]力
- BZOJ3527 [Zjoi2014]力 【fft】
- BZOJ3527: [Zjoi2014]力
- bzoj3527 [Zjoi2014]力
- 【BZOJ】【P3527】【ZJOI2014】【力】【题解】【FFT】
- bzoj 3528 [ZJOI2014] 星系调查 题解
- BZOJ3527: [Zjoi2014]力
- bzoj3527:[Zjoi2014]力-FFT
- bzoj3527 [Zjoi2014]力(fft求卷积)
- BZOJ3527 [Zjoi2014]力
- BZOJ3527: [Zjoi2014]力
- bzoj 3519: [Zjoi2014] 消棋子 题解
- bzoj千题计划167:bzoj3527: [Zjoi2014]力
- BZOJ3527: [Zjoi2014]力
- [ZJOI2014]力 题解
- bzoj 3519: [Zjoi2014] 消棋子 题解