解説
この問題は愚直に解くとO(N3)ですが
数式をいじるとO(N)になる問題です。
解法を2つ示します。
解法1
包除原理で解けます。A の和の3 つの積を S とすると
S=(A1+A2+A3+⋯+AN)∗(A1+A2+A3+⋯+AN)∗(A1+A2+A3+⋯+AN)
これを解くと求めたい式 Tは
S=
(A13+A23+⋯+AN3)
+3∗∑i=1N∑j=1NAi2∗Aj(i=j)
+6∗T
1項目は愚直,2項目は以下のように展開するとO(N) で算出できる。
∑i=1NAi2(∑j=1NAj −Ai)
よって求めたい式TはSから不要部分を引き、6で割ると算出できる。
解法2
式で考える。
Si を 学生 i(1≤i≤N) 以上N以下の学生間において、
2人組の全ての組み合わせのパフォーマンスの和とすると
求めたい数値は
A1∗S2+A2∗S3+A3∗S4+⋯+AN−2∗SN−1
Siは O(N)で算出できる。
よって
累積和をあらかじめ計算しておくと O(N)で計算できる。