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版本 ...
随机推荐
- Linux学习总结(17)——Linux新手必须学会的12个命令
今天的用户可以根据自己的意愿选择是否使用作为Linux象征的命令行,确切的证明了Linux已经有了很大的发展.现在很多Linux发行版的图形用户界面已经非常强大,不再需要命令行. 但是命令行在Linu ...
- n个骰子,和为x的概率分别是多少
开始我居然又没有想出来.. 还是看了解法.开始的时候,一直想的是用概率,百分比来求,后来才发现,用次数来求,最后除一下,更近清晰. 方法,可以是递归,每次多一个骰子的时候,次数分别加上个数以及上一次i ...
- 接口測试-HAR
參考文章 雪球的 HttpApi 接口測试框架设计 HAR(HTTP Archive)规范 神器--Chrome开发人员工具(一) HAR是什么 一句话:关于HTTP所有的信息的一种文件保存格式 HA ...
- LeetCode_Maximum Depth of Binary Tree
一.题目 Maximum Depth of Binary Tree My Submissions Given a binary tree, find its maximum depth. The ma ...
- eclipse 设置代码大小和布局里面代码大小
Eclipse字体大小调整: Window / Preferences / General / Appearance / ColorsAnd Fonts .在右边的对话框里选择Java – Java ...
- 在Redhat Linux中执行非Redhat的Openstack, Redhat将对其Linux不提供支持
一声叹息. IBM.HP.Dell, Mirantis, Piston等.请问.你们还把你们的Openstack部署在Redhat中吗? http://blogs.wsj.com/digits/201 ...
- 扩展MARA 加入Z字段BAPI_TE_MARA
1. 在MARA中APPEND新的结构 2.在BAPI_TE_MARA中APPEND新的结构 (可是这里不能有QUAN,CURR,DEC等数据类型) 3.在BAPI_TE_MARAX中APPEND新的 ...
- 51nod-1253: Kundu and Tree
[传送门:51nod-1253] 简要题意: 给出一棵n个点的树,树上的边要么为黑,要么为红 求出所有的三元组(a,b,c)的数量,满足a到b,b到c,c到a三条路径上分别有至少一条红边 题解: 显然 ...
- MongoDB基本概念和安装配置
基本概念 MongoDB直接存储JSON. 有了NoSQL数据库之后,可以直接在业务层将数据按照指定的结构进行存储. NO SQL NoSQL 1 数据库 数据库 2 表 集合 3 行 文档 4 列 ...
- Java序列化注意事项
当父类继承Serializeble接口时,所有子类可以被序列化 子类实现了Serializeble接口,父类没有,父类中的属性不能序列化(不报错,数据会丢失),但是在子类中属性仍能正确序列化 如果序列 ...