Evi有N个整数a1,a2,…,aN。他的目标是通过变换其中的一些整数得到N个相等的整数。
他最多可以变换一次每个整数。将一个整数x转换成另一个整数y需要花费他(x−y)2美元。即使ai=aj(i≠j),他也必须分别支付转换它们的成本。
找到实现目标的最小总成本。
约束条件
1≤N≤100
−100≤ai≤100
输入
标准输入的输入格式如下:
不
a1 a2。。。安
输出
打印实现Evi目标的最低总成本。
样例输
2
4 8
复印件
8
提示
将两者转换为6s将花费(4−6)2+(8−6)2=8美元,这是最低成本。
HUSTOJ 2021许可的GPLv2
暴力枚举
#include<bits/stdc++.h>
int cnt=0;
using namespace std;
typedef struct stu{
int x,j;
}sss;
int cmp(int a,int b)
{
return a>b;
}
typedef long long ll;
const int maxn=1e3+199;
int a[130];
int k,n;
int sum=0;
int main(){
scanf("%d",&n);
int minn=101,maxx=-101;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
minn=min(minn,a[i]);
maxx=max(maxx,a[i]);
}
int res=1000000;
for(int i=minn;i<=maxx;i++){
int temp=0;
for(int j=1;j<=n;j++)
temp+=( (a[j]-i)*(a[j]-i) );
res=min(res,temp);
}
printf("%d",res);
return 0;
}