题目描述#
有2n件物品,第i件物品的重量为wi。
你每次用扁担运送2件物品。众所周知,扁担如果不平衡,那么就特别费劲,我们定义每次的劳累值为扁担两头物品重量差的平方。
请问运完所有物品,劳累值总和最少是多少?
输入格式#
第一行是一个整数T (1≤T≤100),表示样例的个数。
每个样例的第一行是一个整数n (1≤n≤10000),第二行是2n个整数wi (1≤wi≤107)
输出格式#
每行输出一个样例的结果,为一个整数。
样例输入#
2 1 1 1 1 1 2
样例输出#
0 1
提示#
巨大的输入量,请使用C风格的输入函数。
提示用__int64输入,以下代码用c++写。其实本题就是考差的平方最小的数学知识。
AC代码:
#include<bits/stdc++.h>//万能头文件
using namespace std;
const int N=2e4+8;
__int64 arr[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);//取消同步流
__int64 t;
cin>>t;
__int64 n;
while(t--){
cin>>n;
for(__int64 i=0;i<2*n;i++){
cin>>arr[i];
}
sort(arr,arr+2*n);//sort排序
__int64 sum=0;
for(int i=0;i<2*n-1;i=i+2){
sum=sum+(arr[i+1]-arr[i])*(arr[i+1]-arr[i]);
}
cout<<sum<<endl;
}return 0;
}