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

本文详细解析了2018年CCPC秦皇岛热身赛B题的高效解法,通过数学推导,将原始的O(n^2)复杂度降低到O(n),关键在于构造部分和S1和平方部分和S2,从而快速计算目标表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

T=∑i=1,j>in(aj−ai)2T=\sum_{i=1,j>i}^{n}(a_j-a_i)^2T=i=1,j>in(ajai)2
则有T+0+T=∑i=1,j&gt;in(aj−ai)2+∑i=1,j=in(aj−ai)2+∑i=1,j&lt;in(aj−ai)2T+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)^2T+0+T=i=1,j>in(ajai)2+i=1,j=in(ajai)2+i=1,j<in(ajai)2
=∑i=1,j=1n(aj−ai)2=\sum_{i=1,j=1}^{n}(a_j-a_i)^2=i=1,j=1n(ajai)2
=∑i=1,j=1nai2+∑i=1,j=1naj2−2∗∑i=1,j=1nai∗aj=\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=1nai2+n∗∑j=1naj2−2∗∑i=1nai∗∑j=1naj=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
S1=∑i=1naiS_1=\sum_{i=1}^{n}{a_i} S1=i=1nai
S2=∑i=1nai2S_2=\sum_{i=1}^{n}{a_i^2} S2=i=1nai2
2∗T=2∗n∗S2−2∗S12*T=2*n*S_2-2*S_12T=2nS22S1
T=n∗S2−S1T=n*S_2-S_1T=nS2S1
这样构造出aia_iai的部分和S1S_1S1和平方部分和S2S_2S2后就可以直接计算出TTT

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值