CF380E Sereja and Dividing
题目描述
假设我们有一个实数序列 $a_{1},a_{2},... ,a_{|a|}$ 和一个实数变量 $x$。你可以进行如下的两步操作:
1. 选择序列中的一个下标 $i$($1 \leq i \leq |a|$);
2. 依次执行如下赋值操作:
$$
x := x + a_i \\
a_i := x \\
$$
(即,先用 $a_i$ 更新 $x$,再将 $x$ 的值赋给 $a_i$。)
我们用函数 $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 翻译