CF1540 A. Great Graphs 图论 构造

思路:最优结构为:首先按距离升序对节点排序,然后依次连接第1至n个节点,再在第i个节点与前i-1个节点上添加负权的回边,回边的权值为 d [ j ] − d [ i ] d[j]-d[i] d[j]d[i],最后求所有边的权值和。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[200005];
void solve(){
    
    
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    
    
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    ll ans=a[n];
    ll sum=0;
    for(ll i=2;i<=n;i++)
    {
    
    
        ans+=sum-(i-1)*a[i];
        sum+=a[i];
    }
    cout<<ans<<endl;
}
int main()
{
    
    
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int T;
    cin>>T;
    while(T--)solve();
    return 0;
}

Guess you like

Origin blog.csdn.net/Ambrumf/article/details/122288307