博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019.02.28 bzoj3527: [Zjoi2014]力(fft)
阅读量:4655 次
发布时间:2019-06-09

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

fftfftfft菜题。
题意简述:给一个数列aia_iai,对于i=1→ni=1\rightarrow ni=1n求出ansi=∑i&lt;jai(i−j)2−∑i&gt;jai(i−j)2ans_i=\sum_{i&lt;j}\frac{a_i}{(i-j)^2}-\sum_{i&gt;j}\frac{a_i}{(i-j)^2}ansi=i<j(ij)2aii>j(ij)2ai


思路:

考虑分开求减号前后的两组和。
前面的直接是一个卷积的形式,后面的可以把aaa数组翻转一下也是一个卷积的形式,然后上fftfftfft求即可。
代码:

#include
#define ri register intusing namespace std;const double pi=acos(-1.0);const int N=1e5+5;struct cp{
double x,y; cp(double _x=0,double _y=0):x(_x),y(_y){
} friend inline cp operator+(const cp&a,const cp&b){
return cp(a.x+b.x,a.y+b.y);} friend inline cp operator-(const cp&a,const cp&b){
return cp(a.x-b.x,a.y-b.y);} friend inline cp operator*(const cp&a,const cp&b){
return cp(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);} friend inline cp operator/(const cp&a,const double&b){
return cp(a.x/b,a.y/b);}}a[N];vector
pos;vector
A,B;int lim,tim,n;inline void init(const int&up){
lim=1,tim=0; while(lim<=up)lim<<=1,++tim; pos.resize(lim),A.resize(lim),B.resize(lim),pos[0]=0; for(ri i=0;i
>1]>>1)|((i&1)<<(tim-1));}inline void fft(vector
&a,const int&type){
for(ri i=0;i
a; poly(int k=0,cp x=cp(0,0)){ a.resize(k+1),a[k]=x;} inline cp&operator[](const int&k){ return a[k];} inline const cp&operator[](const int&k)const{ return a[k];} inline int deg()const{ return a.size()-1;} inline poly extend(const int&k){ poly ret=*this;return ret.a.resize(k+1),ret;} friend inline poly operator*(const poly&a,const poly&b){ int n=a.deg(),m=b.deg(); init(n+m); for(ri i=0;i<=n;++i)A[i]=a[i]; for(ri i=0;i<=m;++i)B[i]=b[i]; for(ri i=n+1;i

转载于:https://www.cnblogs.com/ldxcaicai/p/10582391.html

你可能感兴趣的文章
网络对抗作业一
查看>>
路径规划效果图
查看>>
JAVA-注解规范
查看>>
Jmeter下进行ip伪造
查看>>
如何解决SQL Server 2008 无法连接到(local)
查看>>
mysql的数据结构
查看>>
【目标流畅阅读文献】kick off
查看>>
Python学习之路-26 Socket
查看>>
mysqldump不得不说的秘密
查看>>
优化Android Studio/Gradle构建(转)
查看>>
DDD领域模型数据访问权限之用户权限(十)
查看>>
VM 的安装与简介
查看>>
[转]PHP 判断数组是否为空的几种方法
查看>>
使用watch定时执行命令并显示结果
查看>>
转载:javaweb学习总结(三十)——EL函数库
查看>>
用matplotlib库画图
查看>>
读完这篇文章,再决定做不做博后吧
查看>>
JS实现异步编程的几种方式
查看>>
js生成验证码并验证
查看>>
【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强...
查看>>