题目大意:

John农场有N(1=<N<=1000)小丘陵(山),它们高度的范围从0 到 100 但仅仅有当最大的高度差不大于17时。才干够避税。John对它们进行改造,从高的丘陵上取土放到较矮的丘陵上,每改变 x 单位的高度。将会花费 x^2的钱。每一个丘陵的高度仅仅能改变一次。每次改变的值为整数。

PROGRAM NAME: skidesign

INPUT FORMAT

第一行:一个整数n 第二行到N+1行:每行是一座山的海拔高度

SAMPLE INPUT (file skidesign.in)

5 20 4 1 24 21

(约翰的农场有5座山,海拔为1,4,20,21和24)

OUTPUT FORMAT

约翰须要支付改动山海拔高度的总金额,最高和最低的山峰间高度差最多17。

SAMPLE OUTPUT (file skidesign.out)

18

(约翰保持高度为4、20和21的山的高度。他增高高度为1的山、变成高度4(花费 3 ^ 2 = 9)。

他减少了高度为24的山变成高度21也花费3 ^ 2 = 9。)

这道题開始的时候,想到差值是在于最高和最低峰值间。故先排序。获得最大最小值。检查差值是不是大于17,大于则更改,然后循环排序检查。直到所有满足。但这样比較复杂,事实上就是在使所有的高度都在  一个差值小于等于17  的区间 范围内。

解法:

直接枚举长度为17的区间范围(0-100)内,如(0,17) , (1,18), (2,19), ..., (83,100))。

计算全部山峰要在这个范围内,改变山的高度所须要花费的成本。

/*
ID: abc18711
LANG: C
TASK: skidesign
*/ #include <stdio.h> #define MAXN 1001 int main()
{
int N;
int hills[MAXN]; int i, j; int cost;
int mincost; FILE *fin = fopen("skidesign.in", "r");
FILE *fout = fopen("skidesign.out", "w"); fscanf(fin, "%d", &N); for (i=0; i<N; i++)
fscanf(fin, "%d", &hills[i]); //all the possible interval mincost = 99999999;
for (i=0; i<=83 ;i++)
{
//the current interval is [i,i+17] cost = 0; //judge every hills
for (j=0; j<N; j++)
{
if (hills[j] < i)
cost += (i-hills[j])*(i-hills[j]);
else if (hills[j] > (i+17))
cost += (hills[j]-i-17)*(hills[j]-i-17);
} if (mincost > cost) mincost = cost;
} fprintf(fout, "%d\n", mincost); fclose(fin);
fclose(fout); return 0;
}

USACO Ski Course Design解析和C语言实现的更多相关文章

  1. USACO Ski Course Design 暴力

    从Min到Max范围内暴力一下即可. /* ID: wushuai2 PROG: skidesign LANG: C++ */ //#pragma comment(linker, "/STA ...

  2. USACO Ski Course Design

    洛谷P3650 https://www.luogu.org/problemnew/show/P3650 JDOJ 2393 https://neooj.com:8082/oldoj/problem.p ...

  3. [题解]USACO 1.3 Ski Course Design

    Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...

  4. USACO 1.3 Ski Course Design - 暴力

    Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...

  5. USACO 1.3 Ski Course Design

    Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...

  6. 二叉查找树(一)之 图文解析 和 C语言的实现

    概要 本章先对二叉树的相关理论知识进行介绍,然后给出C语言的详细实现.关于二叉树的学习,需要说明的是:它并不难,不仅不难,而且它非常简单.初次接触树的时候,我也觉得它似乎很难:而之所产生这种感觉主要是 ...

  7. AVL树(一)之 图文解析 和 C语言的实现

    概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++ ...

  8. 伸展树(一)之 图文解析 和 C语言的实现

    概要 本章介绍伸展树.它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树.在了解了"二叉查找树"和"AVL树"之后, ...

  9. 二叉堆(一)之 图文解析 和 C语言的实现

    概要 本章介绍二叉堆,二叉堆就是通常我们所说的数据结构中"堆"中的一种.和以往一样,本文会先对二叉堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本 ...

随机推荐

  1. android studio2.2 配置NDK

    1.配置环境: Android studio2.2 配置NDK NDK版本[android-ndk-r13b-windows-x86_64.zip] NDK下载网址:[https://dl.googl ...

  2. java源码之TreeSet

    1,TreeSet介绍 1)TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.2)TreeSet 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法.3)Tr ...

  3. ASP.NET-dropdownlist默认值

    可以在第三个选项中定义一个默认值,但是返回数据的时候就不需要这种类似"请选择名称"之类的提示了,所以在构造seleclt option的时候,要在option中的属性中加上sele ...

  4. UML基础知识点

    UML   :   unified Modeling Language  统一建模语言 1.对系统问题进行分析和建模 2.非专利的第三代建模和规约语言 3.UML是一种开放的方法.用于说明.可视化.构 ...

  5. Android程序之全国天气预报查询(聚合数据开发)

    一.项目演示效果例如以下: 项目源码下载地址: http://pan.baidu.com/s/1pL6o5Mb password:5myq 二.使用 聚合数据SDK: (1)聚合数据官网地址:http ...

  6. java mail邮件发送(带附件) 支持SSL

    java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...

  7. 基于sparksql调用shell脚本运行SQL

    [Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...

  8. Android技术归档

    各位小伙伴们.以后小巫的一些开源码都会上传到github中,所以欢迎大家Follow https://github.com/devilWwj 基于眼下我基本的技术领域在Android上,以后关于And ...

  9. Android This Activity already has an action bar supplied by the window decor

    This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ ...

  10. js判断是对象还是集合

    /*============================================ 函数功能:对返回数据中的列表数据进行非空处理 ============================== ...