P6067题解
_ouhsnaijgnat_ · · 题解
题目传送门
思路
拿到这个题,没看
首先,我们可以把题简化一下,第
于是,我们枚举第
咱们再看看这个算第
我们把括号拆开。
这里一共有
我们把
注意:这种方法必须有序,否则不能变成我们简化后的式子。
话不多说,直接上代码。
代码
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
long long ans,a[1000005],n,sum[1000005];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i];//前缀和
}
for(int i=n;i>=1;i--){
ans=ans+labs(sum[i-1]-a[i]*(i-1));//简化后的式子
}
cout<<ans*2;//把少计算的补回来
return 0;
}