题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6776
题意:有n个小朋友,已知每个小朋友离小沃沃的距离为a[i],求每个小朋友之间最短距离之和。
思路:当每个小朋友在同一直线上最短,排个序。
#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
#include <stack>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <unordered_map>
typedef long long ll;
using namespace std;
ll a[100005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t; cin >> t;
while(t--)
{
memset(a, 0, sizeof(a));
int n; cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
sort(a + 1, a + 1 + n);
ll ans = 0,s = 0;
for(int i = 2; i <= n; i++)
{
s += 1ll*(i - 1)*(a[i]-a[i - 1]);
ans += s;
}
cout << ans << endl;
}
return 0;
} 
京公网安备 11010502036488号