|
|
@@ -15,21 +15,21 @@ Tsr is a cute boy with handsome moustache.
|
|
|
|
|
|
You are given a sequence with length $n$. Tsr wants you to calculate the sum of variance of each successive subsequence. Note: The variance in this problem should't be divided by length.
|
|
|
|
|
|
-Recall $\overline a_{l, r}={1 \over r-l+1} \sum_{i=l}^r a_i$. Then you are supposed to calculate $\sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline a_{i, j})^2$.
|
|
|
+Recall $\overline{a}\_{l, r}={1 \over r-l+1} \sum_{i=l}^r a_i$. Then you are supposed to calculate $\sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline{a}\_{i, j})^2$.
|
|
|
|
|
|
## 题意概述
|
|
|
|
|
|
-给定一个长度为$n$的序列,求$\sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline a_{i, j})^2$。有$T$组数据。
|
|
|
+给定一个长度为$n$的序列,求$\sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline{a}\_{i, j})^2$。有$T$组数据。
|
|
|
|
|
|
数据范围:$1 \le T \le 20, \ 1 \le n \le 10000, \ 1 \le a_i \le 10$。
|
|
|
|
|
|
## 算法分析
|
|
|
|
|
|
-$$\begin{align} \sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline a_{i, j})^2 &= \sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k^2-2a_k \overline a_{i, j}+\overline a_{i, j}^2) \\\\ &= \sum_{k=1}^n \sum_{i=1}^k \sum_{j=k}^n a_k^2-2\sum_{i=1}^n \sum_{j=i}^n \overline a_{i, j} \sum_{k=i}^j a_k+ \sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline a_{i, j}^2 \\\\ &= \sum_{k=1}^n k(n-k+1)a_k^2-\sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline a_{i, j}^2 \end{align}$$
|
|
|
+$$\begin{align} \sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k-\overline{a}\_{i, j})^2 &= \sum_{i=1}^n \sum_{j=i}^n \sum_{k=i}^j (a_k^2-2a_k \overline{a}\_{i, j}+\overline{a}\_{i, j}^2) \\\\ &= \sum_{k=1}^n \sum_{i=1}^k \sum_{j=k}^n a_k^2-2\sum_{i=1}^n \sum_{j=i}^n \overline{a}\_{i, j} \sum_{k=i}^j a_k+ \sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline{a}\_{i, j}^2 \\\\ &= \sum_{k=1}^n k(n-k+1)a_k^2-\sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline{a}\_{i, j}^2 \end{align}$$
|
|
|
|
|
|
前一项可以在$O(n)$时间内求出,只需考虑如何求后一项。令$s_i=\sum_{j=1}^i a_j$。
|
|
|
|
|
|
-$$\begin{align} \sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline a_{i, j}^2 &= \sum_{j=1}^n \sum_{i=1}^j {(s_j-s_{i-1})^2 \over j-i+1} \\\\ &= \sum_{j=1}^n \sum_{i=1}^j {s_j^2-2s_js_{i-1}+s_{i-1}^2 \over j-i+1} \\\\ &= \sum_{j=1}^n s_j^2 \sum_{i=1}^j {1 \over i}-2\sum_{j=1}^n s_j \sum_{i=1}^j {s_{i-1} \over j-(i-1)}+\sum_{j=1}^n \sum_{i=1}^j {s_{i-1}^2 \over j-(i-1)} \end{align}$$
|
|
|
+$$\begin{align} \sum_{i=1}^n \sum_{j=i}^n (j-i+1) \overline{a}\_{i, j}^2 &= \sum_{j=1}^n \sum_{i=1}^j {(s_j-s_{i-1})^2 \over j-i+1} \\\\ &= \sum_{j=1}^n \sum_{i=1}^j {s_j^2-2s_js_{i-1}+s_{i-1}^2 \over j-i+1} \\\\ &= \sum_{j=1}^n s_j^2 \sum_{i=1}^j {1 \over i}-2\sum_{j=1}^n s_j \sum_{i=1}^j {s_{i-1} \over j-(i-1)}+\sum_{j=1}^n \sum_{i=1}^j {s_{i-1}^2 \over j-(i-1)} \end{align}$$
|
|
|
|
|
|
第一项也可以在$O(n)$时间内求出,而后面两项都是卷积的形式,可以用 FFT 在$O(n\log n)$时间内求出。
|
|
|
|