CF380E Sereja and Dividing

题目描述

假设我们有一个实数序列 $a_{1},a_{2},... ,a_{|a|}$ 和一个实数变量 $x$。你可以进行如下的两步操作: 1. 选择序列中的一个下标 $i$($1 \leq i \leq |a|$); 2. 依次执行如下赋值操作(有临时变量 $tmp$ ): $$ tmp := \frac {x+a_i} {2} \\ x := tmp \\ a_i := tmp \\ $$ (即,将 $a_i$ 与 $x$ 都变为它们的算术平均值。) 我们用函数 $g(a, x)$ 表示,按描述的操作,对序列 $a$ 和变量 $x$ 进行任意多次操作后,变量 $x$ 能取得的最大值。 Sereja 有一个整数序列 $b_1, b_2, ..., b_{|b|}$。请帮助 Sereja 计算如下的和: $$ \sum_{1 \leq i \leq j \leq |b|} g([b_{i}, b_{i+1}, ..., b_{j}], 0) $$ 其中 $[b_{i},b_{i+1},...,b_{j}]$ 表示以这些元素顺序组成的新序列。为避免精度问题,请输出所需的和除以 $|b|^{2}$ 的结果。

输入格式

第一行包含一个整数 $|b|$($1 \leq |b| \leq 3 \cdot 10^5$),表示序列 $b$ 的长度。 第二行包含 $|b|$ 个整数 $b_1, b_2, ..., b_{|b|}$($1 \leq b_i \leq 10^5$)。

输出格式

输出一行实数,即所需的和除以 $|b|^2$ 的结果。若输出的绝对误差或相对误差不超过 $10^{-6}$,则视为正确。

说明/提示

由 ChatGPT 5 翻译