数学(FFT):BZOJ 3527 [Zjoi2014]力
裸的FFT,小心i*i爆int!!!
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const int maxn=;
const double PI=acos(-1.0);
struct complex{
double r,i;
complex(long double r_=0.0,long double i_=0.0){
r=r_;i=i_;
}
complex operator+(complex a){
return complex(r+a.r,i+a.i);
}
complex operator-(complex a){
return complex(r-a.r,i-a.i);
}
complex operator*(complex a){
return complex(r*a.r-i*a.i,i*a.r+r*a.i);
}
}A[maxn],B[maxn],C[maxn]; void Rader(complex *a,int len){
for(int i=,j=len>>;i<len-;i++){
if(i<j)swap(a[i],a[j]);
int k=len>>;
while(j>=k){
j-=k;
k>>=;
}
j+=k;
}
} void FFT(complex *a,int len,int on){
Rader(a,len);
for(int h=;h<=len;h<<=){
complex wn(cos(-on**PI/h),sin(-on**PI/h));
for(int j=;j<len;j+=h){
complex w(,);
for(int k=j;k<j+(h>>);k++){
complex x=a[k];
complex y=a[k+(h>>)]*w;
a[k]=x+y;
a[k+(h>>)]=x-y;
w=w*wn;
}
}
}
if(on==-)
for(int i=;i<len;i++)
a[i].r/=1.0*len;
} double f[maxn],E[maxn];
int main(){
int n,len=;
scanf("%d",&n);
while(len<=n*)len<<=;
for(int i=;i<=n;i++)
scanf("%lf",&f[i]); for(int i=;i<=n;i++){
A[i-].r=f[i];
B[n-i].r=f[i];
C[i].r=1.0/i/i;
}
FFT(A,len,);FFT(B,len,);FFT(C,len,);
for(int i=;i<len;i++)
A[i]=A[i]*C[i],B[i]=B[i]*C[i];
FFT(A,len,-);FFT(B,len,-);
for(int i=;i<n;i++){
E[i]=A[i].r-B[n-i-].r;
printf("%.3f\n",E[i]);
}
return ;
}
数学(FFT):BZOJ 3527 [Zjoi2014]力的更多相关文章
- BZOJ 3527: [ZJOI2014]力(FFT)
BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \fra ...
- 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)
我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i) 把它拆成两半,可以发现分子与分母下标相 ...
- 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
[题目分析] FFT,构造数列进行卷积,挺裸的一道题目诶. 还是写起来并不顺手,再练. [代码] #include <cmath> #include <cstdio> #inc ...
- 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 ...
- BZOJ 3527: [Zjoi2014]力
Description 求 \(E_i=\sum _{j=0}^{i-1} \frac {q_j} {(i-j)^2}-\sum _{j=i+1}^{n-1} \frac{q_j} {(i-j)^2} ...
- ●BZOJ 3527 [Zjoi2014]力
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...
随机推荐
- 学习微信小程序之css15解决父盒子高度塌陷
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- alpha属性设置
alpha是来设置透明度的,它的基本属性是filter:alpha(opacity,finishopacity,style,startX,startY,finishX,finishY).opacity ...
- opencart 模块开发详解
opencart 模块开发详解 由 xiekanxiyang » 2013年 7月 11日 10:17 pm opencart 将页面分成若干模块, 每个模块可以有多个实例(可能这样说不是很恰当) 每 ...
- sqlserver-事务处理
事务的概念:简单说就访问并可能更新数据库中各种数据项的一个程序执行单元,一旦开启事务,所有对数据的操作要么全部执行,要么全部都不执行.单条sql语句本身就是一个事务. 事务的属性: 事务是作为单个逻辑 ...
- C++ STL的基本基本原理
STL都是在内存的堆区分配的,但是其析构也是STL帮我们做好的,不用手动去delete. 1.vector 逻辑地址连续的一片内存空间,当空间不足,重新申请新的地址空间,将原有的数据复制过去,而新的地 ...
- Cocos Studio1.5.0.1开发学习笔记(一)
听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation ...
- Linux的压缩解压命令快速上手——解压篇
在Linux系统中,压缩文件通常是先将若干文件(包括目录)打包成一个tar文件,然后再调用压缩程序将tar文件压缩成相应的压缩包,这也就是为什么Linux系的压缩包的后缀通常都是像tar.gz,tar ...
- 关于使用iframe标签自适应高度的使用
在ifrome内设定最小高度,(此方法只适用于页面内切换高度不一.但是会保留最大高度,返回后保持最大高度不再回到最初页面的高度) <iframe id="one4" widt ...
- 生成订单唯一id
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $orderSn = $yCode[intval(date('Y') ...
- Python爬虫常用模块,BeautifulSoup笔记
import urllib import urllib.request as request import re from bs4 import * #url = 'http://zh.house.q ...