分析:读题!读题!读题!重要的事说三遍,中文翻译漏掉了一个重要的地方,每个只能用一次,调了一下午还以为标程错了,其实就是找一段长为17的区间,然后使所有都处于这个区间中代价最小,暴力枚举即可。
1 /* 2 PROB:skidesign 3 ID:wanghan 4 LANG:C++ 5 */ 6 #include "iostream" 7 #include "cstdio" 8 #include "cstring" 9 #include "algorithm" 10 #include "cmath" 11 using namespace std; 12 const int maxn=1000+10; 13 const int INF=1<<28; 14 int a[maxn]; 15 int n; 16 int main() 17 { 18 freopen("skidesign.in","r",stdin); 19 freopen("skidesign.out","w",stdout); 20 cin>>n; 21 for(int i=1;i<=n;i++) 22 cin>>a[i]; 23 int res=INF; 24 for(int i=0;i<=100-17;i++){ 25 int ans=0; 26 for(int j=1;j<=n;j++){ 27 if(a[j]>=i&&a[j]<=i+17){ 28 29 }else{ 30 int num=min(abs(i-a[j]),abs(i+17-a[j])); 31 ans+=num*num; 32 } 33 } 34 res=min(ans,res); 35 } 36 cout<<res<<endl; 37 }