USACO之 skidesign

来源:互联网 发布:wow淘宝卖的宏怎么样 编辑:程序博客网 时间:2024/05/23 22:02

【题意】农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度。在冬天,因为山上有丰富的积雪,约翰经常开办滑雪训练营。不幸的是,约翰刚刚得知税法在滑雪训练营方面有新变化,明年开始实施。在仔细阅读法律后,他发现如果滑雪训练营的最高和最低的山峰海拔高度差大于17就要收税。因此,如果他改变山峰的高度(使最高与最低的山峰海拔高度差不超过17),约翰可以避免支付税收。如果改变一座山x单位的高度成本是x^2单位,约翰最少需要付多少钱?约翰只愿意改变整数单位的高度
【题解】我将海拔从小到大进行排序,以从1到最大高度中的每个整数位最大高度,看此时比他低的海拔与他的高度差,再将比他高的海拔减到和他相等,找出最小的花费。

/*    ID:m1519591    PROG: skidesign    LANG:C++*/#include<iostream>#include<fstream>#include<algorithm>using namespace std;const int size = 1000;//ifstream cin("skidesign.in");//ofstream cout("skidesign.out");int high[size]={0};#define pow(x) ((x)*(x))#define INF 0x3f3f3f3fint main(){    int n,x;    int ans=INF,sum=0;    cin>>n;    for(int i=0;i<=n-1;i++)    {        cin>>high[i];    }    sort(high,high+n);    for(int i=0;i<=high[n-1];i++)    {        sum=0;        for(int j=0;j<=n-1;j++)        {            if(high[j]<i-17)            {                sum+=pow(i-17-high[j]);            }            if(high[j]>i)             {                sum+=pow(high[j]-i);            }        }        ans=min(ans,sum);    }    cout<<ans<<endl;    return 0;}
原创粉丝点击