USACO Ski Course Design解析和C语言实现
题目大意:
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语言实现的更多相关文章
- USACO Ski Course Design 暴力
从Min到Max范围内暴力一下即可. /* ID: wushuai2 PROG: skidesign LANG: C++ */ //#pragma comment(linker, "/STA ...
- USACO Ski Course Design
洛谷P3650 https://www.luogu.org/problemnew/show/P3650 JDOJ 2393 https://neooj.com:8082/oldoj/problem.p ...
- [题解]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 ...
- 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 ...
- 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 ...
- 二叉查找树(一)之 图文解析 和 C语言的实现
概要 本章先对二叉树的相关理论知识进行介绍,然后给出C语言的详细实现.关于二叉树的学习,需要说明的是:它并不难,不仅不难,而且它非常简单.初次接触树的时候,我也觉得它似乎很难:而之所产生这种感觉主要是 ...
- AVL树(一)之 图文解析 和 C语言的实现
概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++ ...
- 伸展树(一)之 图文解析 和 C语言的实现
概要 本章介绍伸展树.它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树.在了解了"二叉查找树"和"AVL树"之后, ...
- 二叉堆(一)之 图文解析 和 C语言的实现
概要 本章介绍二叉堆,二叉堆就是通常我们所说的数据结构中"堆"中的一种.和以往一样,本文会先对二叉堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本 ...
随机推荐
- 2015 Multi-University Training Contest 7 hdu 5372 Segment Game
Segment Game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- C#-入门思维导图
C#-入门思维导图 百度云盘 链接:http://pan.baidu.com/s/1jI5zMS2 密码:0ypc 如有错误,请告知我
- mysql_5.6.24_winx64 安装
1.将zip压缩文件放在一个文件夹中 2.将路劲加入path环境变量 3.注册系统服务 在C:\windows下建立一个ini文件 1 2 3 4 5 6 7 8 9 10 11 12 [client ...
- 使用excel进行数据挖掘(3)----类别检測
使用excel进行数据挖掘(3)----类别检測 在配置环境后,能够使用excel进行数据挖掘. 环境配置问题可參阅: http://blog.csdn.net/xinxing__8185/artic ...
- [CSS3] Responsive Table -- no more table
When the screen size is small, we can use "no more table" solution. So instead of render t ...
- 面向程序猿的设计模式 ——GoF《设计模式》读书总结(壹)抽象工厂&生成器
第一部分:创建型模式 创建型模式抽象了实例化过程. 它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.(把一些小的对象组装成大对象,这个工作由专门的类对象来做) 一个类创建型模式使用继承改变被实 ...
- 1)Win10-UWA开发 UWP应用操作方法、Windows 10应用程序的指南
孙广东 2015.8.22 全部任务类型(比方在列表中显示数据或创建导航窗格)的说明和代码演示样例. 在这一节 包含例如以下: 主题 描写叙述 Accessibility 创建通用的Windows ...
- ArcGIS Server 10.2 公布Oracle11g数据源的 Feature Service
安装好arcgis server 10.2及 Desktop 而且确保 arcgis server manager 能够正常启动执行载入服务 1.Oracle 配置 安装好Oracleserver端程 ...
- SQL Server: Windows Firewall with Advanced Security
SQL Database Engine: TCP 1433 & UDP 1434 SQL Analysis Service: TCP 2383 (2382 if named instance) ...
- php 生成 guid
function guid( $opt = true ){ // Set to true/false as your default way to do this. if( function_exis ...