USACO skidesign

来源:互联网 发布:上海家教机构知乎 编辑:程序博客网 时间:2024/06/18 16:36

枚举H高度,并不断Check。
比H小的直接加上去,比H大的判断下。

/* ID:ypcdyx1PROG:skidesignLANG:C++ */#include <iostream>#include <fstream>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <cstring>#include <vector>#include <iomanip>#define cin fin#define cout foutusing namespace std;ifstream fin;ofstream fout;int n;int a[10010];long long ans;long long dis;int h;int cmp(int q,int w){    return q<w;}int main(){    fin.open("skidesign.in");    fout.open("skidesign.out");    cin>>n;    for (int i=1;i<=n;i++) cin>>a[i];    sort(a+1,a+n+1,cmp);    h=1;    for (int i=1;i<=n;i++) if (abs(a[i]-h)>17) ans+=(abs(a[i]-h)-17)*(abs(a[i]-h)-17);    for (h=2;h<=120;h++)    {        dis=0;        for (int i=1;i<=n;i++) if (a[i]<=h) dis+=(h-a[i])*(h-a[i]);else if (a[i]-h>17) dis+=(a[i]-h-17)*(a[i]-h-17);        if (dis<ans) ans=dis;    }    cout<<ans<<endl;    fin.close();    fout.close();}
0 0