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

[ZJOI 2014]力

Description

给出n个数qi,给出Fj的定义如下:
$$F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i q_j}{(i-j)^2 }$$
令Ei=Fi/qi,求Ei.

Input

第一行一个整数n。
接下来n行每行输入一个数,第i行表示qi。
n≤100000,0<qi<1000000000

Output

 n行,第i行输出Ei。与标准答案误差不超过1e-2即可。

Sample Input

5
4006373.885184
15375036.435759
1717456.469144
8514941.004912
1410681.345880

Sample Output

-16838672.693
3439.793
7509018.566
4595686.886
10903040.872

题解

约掉 $q_i$ $$E_j = \sum_{i<j}\frac{q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_j}{(i-j)^2 }$$

我们拿出 $A_i=\sum\limits_{i<j}\frac{q_j}{(i-j)^2 }$ 讨论。

构造第一个多项式系数依次为 $q_i,i\in[0,n)$ ,第二个多项式系数 $\begin{cases}0 &i=0\\ \frac{1}{i^2} &i\in[1,n)\end{cases}$

卷积之后第 $i$ 项就是所求的 $A_i$ 。之后的类似,对于 $A'_i=\sum\limits_{i>j}\frac{q_j}{(i-j)^2 }$ 只要把第一个多项式翻转,卷积后第 $n-1-i$ 项就是所求的 $A'_i$ 。

 1 //It is made by Awson on 2018.1.28
 2 #include <set>
 3 #include <map>
 4 #include <cmath>
 5 #include <ctime>
 6 #include <queue>
 7 #include <stack>
 8 #include <cstdio>
 9 #include <string>
10 #include <vector>
11 #include <complex>
12 #include <cstdlib>
13 #include <cstring>
14 #include <iostream>
15 #include <algorithm>
16 #define LL long long
17 #define dob complex<double>
18 #define Abs(a) ((a) < 0 ? (-(a)) : (a))
19 #define Max(a, b) ((a) > (b) ? (a) : (b))
20 #define Min(a, b) ((a) < (b) ? (a) : (b))
21 #define Swap(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b))
22 #define writeln(x) (write(x), putchar('\n'))
23 #define lowbit(x) ((x)&(-(x)))
24 using namespace std;
25 const int N = 100000*4;
26 const double pi = acos(-1.0);
27 
28 int n, m, s, L, R[N+5];
29 double q[N+5], sum, ans[N+5];
30 dob a[N+5], b[N+5];
31 
32 void FFT(dob *A, int o) {
33     for (int i = 0; i < n; i++) if (i > R[i]) swap(A[i], A[R[i]]);
34     for (int i = 1; i < n; i <<= 1) {
35     dob wn(cos(pi/i), sin(pi*o/i)), x, y;
36     for (int j = 0; j < n; j += (i<<1)) {
37         dob w(1, 0);
38         for (int k = 0; k < i; k++, w *= wn) {
39         x = A[j+k], y = w*A[i+j+k];
40         A[j+k] = x+y, A[i+j+k] = x-y;
41         }
42     }
43     }
44 }
45 void work() {
46     scanf("%d", &n); n--; s = n;
47     for (int i = 0; i <= n; i++) scanf("%lf", &q[i]), a[i] = q[i];
48     for (int i = 1; i <= n; i++) b[i] = 1./i/i;
49     m = n<<1; for (n = 1; n <= m; n <<= 1) L++;
50     for (int i = 0; i < n; i++) R[i] = (R[i>>1]>>1)|((i&1)<<(L-1));
51     FFT(a, 1), FFT(b, 1);
52     for (int i = 0; i <= n; i++) a[i] *= b[i];
53     FFT(a, -1);
54     for (int i = 0; i <= s; i++) ans[i] = a[i].real()/n;
55     for (int i = 0; i <= n; i++) a[i] = 0;
56     for (int i = 0; i <= s; i++) a[i] = q[s-i];
57     FFT(a, 1);
58     for (int i = 0; i <= n; i++) a[i] *= b[i];
59     FFT(a, -1);
60     for (int i = 0; i <= s; i++) printf("%lf\n", ans[i]-a[s-i].real()/n);
61 }
62 int main() {
63     work();
64     return 0;
65 }

 

转载于:https://www.cnblogs.com/NaVi-Awson/p/8372585.html

相关文章:

  • 不辜负每一个日出——Leo2012寄语
  • 微信小程序笔记
  • 索引以及索引缓冲区
  • Case when用法
  • Opencv 编译
  • Python2.7-copy_reg
  • SQL——STUFF用法
  • 《数据库系统概念》20-恢复系统
  • 深入理解CAST和CONVERT提供的具体功能
  • kafka实战
  • sql server 2000/2005/2008 判断存储过程、触发器、视图是否存在并删除
  • 【转】C#中静态方法和非静态方法的区别
  • MSSQL sysobjects type 类型汇总
  • Todo list
  • UVa-1588 Kickdown(换低档装置)
  • canvas绘制圆角头像
  • EOS是什么
  • Java|序列化异常StreamCorruptedException的解决方法
  • k8s如何管理Pod
  • Otto开发初探——微服务依赖管理新利器
  • Python十分钟制作属于你自己的个性logo
  • SwizzleMethod 黑魔法
  • Vue学习第二天
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 检测对象或数组
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 世界上最简单的无等待算法(getAndIncrement)
  • 自定义函数
  • 2017年360最后一道编程题
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​2020 年大前端技术趋势解读
  • ​Java并发新构件之Exchanger
  • ​MySQL主从复制一致性检测
  • # 数据结构
  • $NOIp2018$劝退记
  • (1)bark-ml
  • (2022 CVPR) Unbiased Teacher v2
  • (39)STM32——FLASH闪存
  • (5)STL算法之复制
  • (C语言)字符分类函数
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (算法)Travel Information Center
  • (转载)从 Java 代码到 Java 堆
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .naturalWidth 和naturalHeight属性,
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 解决重复提交问题
  • .Net程序帮助文档制作
  • @property @synthesize @dynamic 及相关属性作用探究
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例