USACO-Section1.3Ski Course Design[其他]

来源:互联网 发布:s71200编程软件 中文 编辑:程序博客网 时间:2024/05/17 23:53

2017-05-24

题目

输入n,然后输入n个数表示山头的高度。你要铲平或者填土使得任意两山高度不能相差超过17,变动k单位高度需要k^2的钱,计算最少需要多少钱。

题解

暴力搜索

代码

/*ID: xcwhkh1LANG: CTASK: skidesign*/#include <stdio.h>#include <string.h>int main () {    FILE *fin=fopen("skidesign.in","r");    FILE *fout=fopen("skidesign.out","w");    int n,sum,i,j,max=0,min=1000,mmin=1000000;    int a[1000];    fscanf(fin,"%d",&n);    for(int i=0;i<n;i++)    {        fscanf(fin,"%d",&a[i]);        if(a[i]>max)            max=a[i];        if(a[i]<min)            min=a[i];    }    printf("%d %d\n",min,max);    for(int i=min;i<max;i++)//i为下限     {        sum=0;        for(int j=0;j<n;j++)        {            if(a[j]-i>17)                sum+=((a[j]-i-17)*(a[j]-i-17));            if(i>a[j])                sum=sum+(i-a[j])*(i-a[j]);        }        if(sum<mmin)            mmin=sum;    }    fprintf(fout,"%d\n",mmin);    return 0;}
原创粉丝点击