博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ZJOI2014]力【FFT】
阅读量:6223 次
发布时间:2019-06-21

本文共 1620 字,大约阅读时间需要 5 分钟。

已知\[E(j)=\sum_{i < j} \frac{q_i}{(i-j)^2}-\sum_{i > j} \frac{q_i}{(i-j)^2}\], 求\(E\)
\(a(i)=q_i ,b(i)=i^{-2}\)
对于减号左边,\[L(j)=\sum_{i < j}a(i)b(j-i)\]
对于减号右边,\[R(j)=-\sum_{i > j}a(i)b(i-j)\]
\[c(i)=b(i-n)=(i-n)^{-2}, i > n\], 则\[L(j)=\sum_{i < j}a(i)b(j-i+n-n)=\sum_{i < j} a(i)c(j-i+n)=(a*c)(n+j)\]
\[c(i)=-b(n-i)=-(n-i)^{-2}, i < n\],即\[c(n-i)=-b(i)=-i^{-2}\],则\[R(j)=\sum_{i > j}a(i)b(i-j)=\sum_{i > j}a(i)c(n-i+j)=(a*c)(n+j)\]
特殊的,令\(c(n)=0\)
\[E(j)=(a*c)(n+j)\]
求出\(a\)\(c\)的卷积就好了

const double pi=acos(-1.0);const int Maxn=2e6+10;int n, l, r[Maxn], lim=1;struct complex{double a, b; complex(double a=0, double b=0):a(a), b(b){}} f[Maxn], g[Maxn];complex operator +(complex &A, complex &B){return complex(A.a+B.a, A.b+B.b);}complex operator -(complex &A, complex &B){return complex(A.a-B.a, A.b-B.b);}complex operator *(complex &A, complex &B){return complex(A.a*B.a-A.b*B.b, A.b*B.a+A.a*B.b);}void FFT(complex *A, int tp){    for(int i=0; i < lim; i++) if(i < r[i]) swap(A[i], A[r[i]]);    complex wn, w, x, y;    for(int mid=1; mid < lim; mid<<=1){ wn=complex(cos(pi/mid), tp*sin(pi/mid));        for(int j=0, R=mid<<1; j < lim; j+=R){ w=complex(1, 0);            for(int k=0; k < mid; k++, w=w*wn) x=A[j+k], y=w*A[j+k+mid], A[j+k]=x+y, A[j+k+mid]=x-y;        }    }}void solve(){    n=read();    for(int i=1; i <= n; i++) scanf("%lf", &f[i].a); g[n].a=0;    for(int i=0; i < n; i++) g[i].a=-1.0/(n-i)/(n-i);     for(int i=n+1; i <= n*2; i++) g[i].a=1.0/(i-n)/(i-n);    while(lim <= n*3) lim <<= 1, l++;     for(int i=0; i < lim; i++) r[i]=(r[i>>1]>>1)|((i&1)<

转载于:https://www.cnblogs.com/zerolt/p/9297922.html

你可能感兴趣的文章
分享一个IIS日志分析工具-LogParse
查看>>
Silverlight中使用Grid创建自定义的Table表格
查看>>
Console-算法[for,if]-不用第三个变量,交换两字符串的值
查看>>
Hadoop入门(一):Hadoop伪分布安装
查看>>
Tomcat环境配置
查看>>
屌丝程序员的那些事(一)-毕业那年
查看>>
CWidgetMgr---H
查看>>
spring测试实例
查看>>
创建Sdcard
查看>>
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];...
查看>>
cocos2d-x与ISO内存管理(转)
查看>>
磁盘I/O的性能评估方法
查看>>
计算机排序算法
查看>>
普通IT和文艺IT工程师的区别
查看>>
sql之left join、right join、inner join的区别
查看>>
分贝显示器,实时显示声音强度(附源码)
查看>>
Struts2 高危漏洞修复方案 (S2-016/S2-017)
查看>>
新手必看:如何快速看懂VC++项目
查看>>
使用NativeExtension向AIR app 添加Activity和BroadCastReceiver(2)
查看>>
JavaScript 装饰者模式(this运用)
查看>>