skidesign-section1.3

来源:互联网 发布:小蜜蜂软件怎么使用 编辑:程序博客网 时间:2024/06/06 17:40

题目大意

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

输入格式

line 1:一个整数nline 2-N+1:每行是一座山的海拔高度

输出格式

一个数字,表示约翰需要支付修改山海拔高度的总金额,最高和最低的山峰间高度差最多17。

样例输入

520412421

样例输出

18

题解

题目抽象出来就是把0-100的数字放到一个区间长度为17的区间中,并且要求所付出代价最小,易知代价随路径长度增大而增大,条件范围内便利所有可能的区间,每种区间算出对应的代价,比较即可得出所求

代码

#include<stdio.h>int f(int i){if(i>0){    if(i>17)        return i-17;    else        return 0;}if(i<0)    return -i;return 0;}int main(){int n=0,a[1010]={0},b[1010]={0},i=0,j=0,temp=0,p=0;long int s[1000]={0},min=0;scanf("%d",&n);for(i=0;i<n;i++){    scanf("%d",&a[i]);}for(i=0;i<n;i++)    for(j=0;j<n-i-1;j++)    {        if(a[j]>a[j+1])        {            temp=a[j];            a[j]=a[j+1];            a[j+1]=temp;        }    }p=a[n-1]-a[0]-17;if(p<=0){    printf("0\n");    return 0;}for(i=0;i<=p;i++){    s[i]=0;    for(j=0;j<n;j++)    {        b[j]=f(a[j]-a[0]-i);    }    for(j=0;j<n;j++)        s[i]=s[i]+b[j]*b[j];}min=s[0];for(i=0;i<=p;i++)    if(min>s[i])        min=s[i];printf("%ld\n",min);return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 主播遇到黑粉怎么办 在工作单位突然死亡怎么办 孕7月半夜脚抽筋怎么办 上单对上两个射手怎么办 游戏本玩游戏掉帧怎么办 手机开直播很卡怎么办 小孩小鸡被虫子咬了怎么办 小鸡仔不吃食了怎么办 小鸡的腿瘸了怎么办 在境外住酒店钱被偷了怎么办 一加6屏幕辣眼睛怎么办 棉质衣服皱了怎么办 洗完衣服皱了怎么办 穿衬衫袖子很皱怎么办 洗完衣服有褶皱怎么办 麻料裤子容易皱怎么办 苹果手机邮件删了怎么办 飞猪12306登录不上怎么办 邮箱被别人绑定12306怎么办 白名单一个地址也没怎么办 12306忘记用户名和密码怎么办 12306忘了用户名和密码怎么办 12306注册后忘了密码怎么办 12306帐号忘了密码怎么办 12306忘了密码和手机号怎么办 12306账号密码邮箱忘了怎么办 注册12306账号没有邮箱怎么办 12306忘了用户名和邮箱怎么办 12306忘记用户名和邮箱怎么办 12306证件号码已被注册怎么办 12306忘记手机号和邮箱怎么办 发邮件被对方服务器退回怎么办 铁路12306显示已注册怎么办 qq密码太长输不进去怎么办 淘宝买家收货地址填写不全怎么办 护士电子注册账户未激活怎么办 您的邮件被退回怎么办 给国外发信被退怎么办 苹果8icloud满了怎么办 吃人参回奶了怎么办 邮箱被黑客黑了怎么办