2018CCPC秦皇岛热身赛B题解: $$ \sum_{i=1,j>i}^{n}(a_j-a_i)^2$$

##2018CCPC秦皇岛热身赛B题解: ∑ i = 1 , j > i n ( a j − a i ) 2 \sum_{i=1,j>i}^{n}(a_j-a_i)^2 i=1,j>in(ajai)2

暴力法 O ( n 2 ) O(n^2) O(n2)比较容易想到,不再赘述

这里提供一个 O ( n ) O(n) O(n)的解法

T = ∑ i = 1 , j > i n ( a j − a i ) 2 T=\sum_{i=1,j>i}^{n}(a_j-a_i)^2 T=i=1,j>in(ajai)2
则有 T + 0 + T = ∑ i = 1 , j &gt; i n ( a j − a i ) 2 + ∑ i = 1 , j = i n ( a j − a i ) 2 + ∑ i = 1 , j &lt; i n ( a j − a i ) 2 T+0+T=\sum_{i=1,j&gt;i}^{n}(a_j-a_i)^2+\sum_{i=1,j=i}^{n}(a_j-a_i)^2+\sum_{i=1,j&lt;i}^{n}(a_j-a_i)^2 T+0+T=i=1,j>in(ajai)2+i=1,j=in(ajai)2+i=1,j<in(ajai)2
= ∑ i = 1 , j = 1 n ( a j − a i ) 2 =\sum_{i=1,j=1}^{n}(a_j-a_i)^2 =i=1,j=1n(ajai)2
= ∑ i = 1 , j = 1 n a i 2 + ∑ i = 1 , j = 1 n a j 2 − 2 ∗ ∑ i = 1 , j = 1 n a i ∗ a j =\sum_{i=1,j=1}^{n}{a_i^2}+\sum_{i=1,j=1}^{n}{a_j^2}-2*\sum_{i=1,j=1}^{n}{a_i*a_j} =i=1,j=1nai2+i=1,j=1naj22i=1,j=1naiaj
= n ∗ ∑ i = 1 n a i 2 + n ∗ ∑ j = 1 n a j 2 − 2 ∗ ∑ i = 1 n a i ∗ ∑ j = 1 n a j =n*\sum_{i=1}^{n}{a_i^2}+n*\sum_{j=1}^{n}{a_j^2}-2*\sum_{i=1}^{n}{a_i}*\sum_{j=1}^{n}{a_j} =ni=1nai2+nj=1naj22i=1naij=1naj
S 1 = ∑ i = 1 n a i S_1=\sum_{i=1}^{n}{a_i} S1=i=1nai
S 2 = ∑ i = 1 n a i 2 S_2=\sum_{i=1}^{n}{a_i^2} S2=i=1nai2
2 ∗ T = 2 ∗ n ∗ S 2 − 2 ∗ S 1 2*T=2*n*S_2-2*S_1 2T=2nS22S1
T = n ∗ S 2 − S 1 T=n*S_2-S_1 T=nS2S1
这样构造出 a i a_i ai的部分和 S 1 S_1 S1和平方部分和 S 2 S_2 S2后就可以直接计算出 T T T

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值