当前位置: 首页 > news >正文

bzoj3527: [Zjoi2014]力

一句话:给出n个数qi,给出Fj的定义如下: 
 

令Ei=Fi/qi,求Ei


思路:先把q[i]约了,然后就是:


Ei=j<iqj(ji)2j>iqj(ji)2


先看左边:

令f[i]=q[i],g[i]=1/i/i

左边就是sigma f[j]*g[i-j] 

然后下标和就为定值了,就是卷积了,上FFT搞一搞

右边把q反过来再上FFT搞一搞


j<i

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const double pi=M_PI;
const int maxn=270010;
using namespace std;
struct plex{
	double r,i;
}tmp[maxn];
plex operator +(plex a,plex b){return (plex){a.r+b.r,a.i+b.i};}
plex operator -(plex a,plex b){return (plex){a.r-b.r,a.i-b.i};}
plex operator *(plex a,plex b){return (plex){a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r};}
int n,nn;double q[maxn],ans[maxn];

struct DFT{
	plex a[maxn];
	void fft(int bg,int step,int size,int op){
		if (size==1) return;
		fft(bg,step<<1,size>>1,op),fft(bg+step,step<<1,size>>1,op);
		plex w=(plex){1,0},t=(plex){cos(2*pi/size),sin(2.0*pi*op/size)};
		int p=bg,p0=bg,p1=bg+step;
		for (int i=0;i<size/2;i++){
			tmp[p]=a[p0]+w*a[p1];
			tmp[p+size/2*step]=a[p0]-w*a[p1];
			p+=step,p0+=step*2,p1+=step*2,w=w*t;
		}
		for (int i=bg;size;i+=step,size--) a[i]=tmp[i];
	}
}a,b,c;

int main(){
	scanf("%d",&n);
	for (nn=1;nn<(n<<1);nn<<=1);
	for (int i=0;i<n;i++) scanf("%lf",&q[i]);
	for (int i=1;i<n;i++) b.a[i]=(plex){1.0/i/i,0};
	for (int i=0;i<n;i++) a.a[i]=(plex){q[i],0};
	a.fft(0,1,nn,1),b.fft(0,1,nn,1);
	for (int i=0;i<nn;i++) c.a[i]=a.a[i]*b.a[i];
	c.fft(0,1,nn,-1);
	for (int i=0;i<n;i++) ans[i]+=c.a[i].r/nn;
	for (int i=0;i<n;i++) a.a[i]=(plex){q[n-i-1],0};
	for (int i=n;i<nn;i++) a.a[i]=(plex){0,0};
	a.fft(0,1,nn,1);
	for (int i=0;i<nn;i++) c.a[i]=a.a[i]*b.a[i];
	c.fft(0,1,nn,-1);
	for (int i=0;i<n;i++) ans[i]-=c.a[n-i-1].r/nn;
	for (int i=0;i<n;i++) printf("%.7f\n",ans[i]);
	return 0;
}



j<i

转载于:https://www.cnblogs.com/thythy/p/5493576.html

相关文章:

  • java中BASE64的编码解码
  • 有关“滑动门”代码研究
  • 泛型的省略
  • 关于WinPE安装操作系统
  • SSO统一身份认证
  • android 入门-工程属性介绍
  • JavaScript prototype 属性
  • 7月20号总结
  • XMLHttpRequest对象
  • Collaborative filtering
  • 2012 蓝桥杯 第39级台阶 【初赛试题】
  • Lightoj1009 Back to Underworld(带权并查集)
  • 2013蓝桥杯 前缀判断 【初赛试题】
  • 2013蓝桥杯 画表格 【模拟赛】
  • 如何批量转换为百度经纬度
  • ----------
  • [NodeJS] 关于Buffer
  • AHK 中 = 和 == 等比较运算符的用法
  • Apache Zeppelin在Apache Trafodion上的可视化
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • iOS编译提示和导航提示
  • log4j2输出到kafka
  • SwizzleMethod 黑魔法
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 聚类分析——Kmeans
  • 前端性能优化——回流与重绘
  • 悄悄地说一个bug
  • 深度学习中的信息论知识详解
  • 思否第一天
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 一个SAP顾问在美国的这些年
  • 自动记录MySQL慢查询快照脚本
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​flutter 代码混淆
  • ![CDATA[ ]] 是什么东东
  • #mysql 8.0 踩坑日记
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)Android开发优化---------UI优化
  • (2015)JS ES6 必知的十个 特性
  • (Git) gitignore基础使用
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)linux文件内容查看
  • (一)认识微服务
  • (原)Matlab的svmtrain和svmclassify
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Windows2003安全设置/维护
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据