BZOJ 3527: [Zjoi2014]力(FFT)
我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i)
把它拆成两半,可以发现分子与分母下标相加总为i
也就是说,例如左边, 可以表示成g(x)= f(i)*F(x-i) (i<x) 也就是卷积了
可以轻易的构造出 f(i)= ai F(i)=1/i/i FFT就行了
右边的话,吧f(i)给倒过来就行了 (f(i)=an-i)
最后的答案 ansi=g(i)-G(n-i-1)
ok了
最近发现自己写环套树老写渣,找几道题来练练~~
CODE:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct com{ //自定义复数类
double r,i;
com(double real=0.0,double imag=0.0){
r=real;i=imag;
}
com operator +(const com x){
return com(x.r+r,x.i+i);
}
com operator -(const com x){
return com(r-x.r,i-x.i);
}
com operator *(const com x){
return com(x.r*r-x.i*i,r*x.i+i*x.r);
}
};
#define maxn 400100 //答案的位数
#define pi acos(-1.0)
com a[maxn*2],b[maxn*2],c[maxn*2],d[maxn*2];;
bool bo[maxn*2];
int bitrec(com *x,int l){
memset(bo,0,sizeof(bo));
for (int i=1;i<l;i++){
if (bo[i]) continue;
int m=(int)log2(l)+0.5;
int y=i,z=0;
while (m--){
z<<=1;
z|=y&1;
y>>=1;
}
bo[z]=bo[i]=1;
swap(x[z],x[i]);
}
return 0;
}
int fft(com *x,int l,double o){
bitrec(x,l);
for (int i=2;i<=l;i<<=1){
com w(cos(2.0*o*pi/i),sin(2.0*o*pi/i));
for (int j=0;j<l;j+=i){
com t(1.0,0.0);
for (int k=j;k<j+(i>>1);k++){
com u=x[k],v=x[k+(i>>1)]*t;
x[k]=u+v;
x[k+(i>>1)]=u-v;
t=t*w;
}
}
}
if (o==-1) {
for (int i=0;i<l;i++) x[i].r/=l;
}
return 0;
}
double x[maxn];
int main(){
int n;
scanf("%d",&n);int l=1;
while (l<=n*2) l<<=1;
for (int i=0;i<n;i++) {
scanf("%lf",&x[i]);
a[i]=com(x[i],0);
}
for (int i=n;i<l;i++) a[i]=com(0,0);
for (int i=1;i<n;i++) b[i]=com(1.0/i/i,0);
for (int i=n;i<l;i++) b[i]=com(0,0);
b[0]=com(0,0);
fft(a,l,1);
fft(b,l,1);
for (int i=0;i<l;i++) c[i]=a[i]*b[i];
fft(c,l,-1);
for (int i=0;i<n;i++) a[i]=com(x[n-i-1],0);
for (int i=n;i<=l;i++) a[i]=com(0,0);
fft(a,l,1);
for (int i=0;i<l;i++) d[i]=a[i]*b[i];
fft(d,l,-1);
for (int i=0;i<n;i++) printf("%.3lf\n",(c[i].r-d[n-i-1].r));
return 0;
}
BZOJ 3527: [Zjoi2014]力(FFT)的更多相关文章
- bzoj 3527 [Zjoi2014]力——FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...
- bzoj 3527 [Zjoi2014] 力 —— FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 看了看TJ才推出来式子,还是不够熟练啊: TJ:https://blog.csdn.n ...
- BZOJ 3527 [Zjoi2014]力 ——FFT
[题目分析] FFT,构造数列进行卷积,挺裸的一道题目诶. 还是写起来并不顺手,再练. [代码] #include <cmath> #include <cstdio> #inc ...
- 【BZOJ】3527: [Zjoi2014]力 FFT
[参考]「ZJOI2014」力 - FFT by menci [算法]FFT处理卷积 [题解]将式子代入后,化为Ej=Aj-Bj. Aj=Σqi*[1/(i-j)^2],i=1~j-1. 令f(i)= ...
- ●BZOJ 3527 [Zjoi2014]力
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...
- BZOJ 3527: [ZJOI2014]力(FFT)
BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \fra ...
- 数学(FFT):BZOJ 3527 [Zjoi2014]力
题目在这里:http://wenku.baidu.com/link?url=X4j8NM14MMYo8Q7uPE7-7GjO2_TXnMFA2azEbBh4pDf7HCENM3-hPEl4mzoe2w ...
- bzoj 3527: [Zjoi2014]力 快速傅里叶变换 FFT
题目大意: 给出n个数\(q_i\)定义 \[f_i = \sum_{i<j}{\frac{q_iq_j}{(i-j)^2}} - \sum_{i>j}\frac{q_iq_j}{(i-j ...
- bzoj 3527: [Zjoi2014]力【FFT】
大力推公式,目标是转成卷积形式:\( C_i=\sum_{j=1}^{i}a_jb_{i-j} \) 首先下标从0开始存,n-- \[ F_i=\frac{\sum_{j<i}\frac{q_j ...
随机推荐
- sqlserver 笔记:常用字符串函数
select tid,tid+ coalesce(tid0,'101') from article where id=1 ---如果tid为null 则 返回101 select LEN('你 ...
- 普通项目如何转换成Maven项目 --转载自百度知道
右键普通Java项目,在弹出的菜单中选择[Configure]-[Convert to Maven Project]: 2 在弹出的对话框中输入项目的groupId, artifactId和versi ...
- 如何开发一个微信小程序
一.概述 特点:对商家来说,小程序的开发成本低(有丰富的组件.api等).运营成本低(有数据日志等).稳定.互动流畅,便于分享.传播(基本微信平台的大量用户).对用户来说,扫码即可获取服务,随 ...
- Storm学习笔记六
1 Storm的通信机制 说明:1.worker与worker之间跨进程通信: 2.worker内部中各个executor间的通信,Task对象--->输入队列queue--->执行--- ...
- Java 之 Servlet介绍(Java之负基础实战)
1.介绍 Servlet是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了 ...
- social relation & recommender system
由于社交网络盛行,现在许多关于推荐系统的研究都考虑了如何使用social relation来改进推荐系统.虽然有很多论文都成功的使用social relation改进了推荐效果,然而,也有一些尝试失败 ...
- HDU-5086-Revenge of Segment Tree
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5086 这题太不应该了,比赛时没做出来,本来呢,以现在的水平这题是能够做出来的,可就是题目理解错了,按题 ...
- 使用SimpleAdapter创建ListView
通过ArrayAdapter实现Adapter虽然简单.易用,但ArrayAdapter的功能比较有限.它的每个列表只能是TextView.如果开发者需呀实现更复杂的列表项,则可以考虑使用Simple ...
- HTML 颜色值
HTML 颜色值 颜色由红(R).绿(G).蓝(B)组成. 颜色值 颜色值由十六进制来表示红.绿.蓝(RGB). 每个颜色的最低值为0(十六进制为00),最高值为255(十六进制为FF). 十六进制值 ...
- 使用Flex构建Web和移动参考应用程序
范例文件 Shopping Cart Sales Dashboard Expense Tracker 需要的其他产品 Android 2.2及更高版本或Android 3.0及更高版本的设备 仅仅在F ...