USACO 1.3-Ski Course Design

校赛的题啊,后悔没有早早做了!!!校赛啊!!!那么丰厚的奖品呢!!!唉~省赛加油吧!!!
/*
ID: 15901291
TASK: skidesign
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
/******************************************************************************************************************
            数据小,直接枚举长度为17的范围即可。
            UPDATE: 枚举所有长度为17的间隔并求对应费用,
                    如1和18,即求把所有高度大于18的山变为18和小于1的山变为1的费用,
                    然后对所有间隔对应的费用求最小值
******************************************************************************************************************/
using namespace std;
int a[1050];
int main()
{
    ifstream fin("skidesign.in");
    ofstream fout("skidesign.out");

    int T;
    while(fin>>T)
    {
        int price=1<<30,ans;
        for(int i = 0;i < T;i ++)   fin>>a[i];
        sort(a,a+T);

        for(int i = 0;i <= 83;i ++){
            ans=0;      //注意这里,每次需要将 ans 赋值为 0
            for(int j = 0;j < T;j ++){
                if(a[j] < i)    ans+=pow(i-a[j],2);
                if(a[j] > i+17) ans+=pow(a[j]-17-i,2);
            }
            price=min(price,ans);
        }
        fout<<price<<endl;
    }
    return 0;
}


 

posted on 2016-04-05 22:53  Jstyle  阅读(107)  评论(0编辑  收藏  举报

导航