版权声明:转载无所谓的。。。 https://blog.csdn.net/xuxiayang/article/details/82988939
大意
给定一些数,要求选定一个数 ,然后改变一些数,使得所有数的范围在 ~ 之间,若改变一个数 到 的代价为 ,求最小代价
思路
直接枚举这个 即可
代码
/*
ID:hzbismy1
LANG:C++
TASK:skidesign
*/
#include<cstdio>
using namespace std;int n,a[1001],maxn,minn=50234567,ans=50234567,now;
signed main()
{
freopen("skidesign.in","r",stdin);
freopen("skidesign.out","w",stdout);
scanf("%d",&n);
for(register int i=1;i<=n;i++) scanf("%d",a+i),maxn=a[i]>maxn?a[i]:maxn,minn=a[i]<minn?a[i]:minn;
for(register int j=minn;j<=maxn;j++)
{
now=0;
for(register int i=1;i<=n;i++)
{
if(a[i]-j<0) now+=(a[i]-j)*(a[i]-j);//小于0了补回来
if(a[i]-j>17) now+=(a[i]-j-17)*(a[i]-j-17);//超过17了砍掉
}
ans=now<ans?now:ans;
}
printf("%d\n",ans);
}