USACO Ski Course Design解析和C语言实现
来源:互联网 发布:数据采集系统应用领域 编辑:程序博客网 时间:2024/03/29 07:57
题目大意:
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: abc18711LANG: CTASK: skidesign*/#include <stdio.h>#define MAXN 1001int 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 intervalmincost = 99999999;for (i=0; i<=83 ;i++){//the current interval is [i,i+17]cost = 0;//judge every hillsfor (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;}
0 0
- USACO Ski Course Design解析和C语言实现
- USACO Ski Course Design
- usaco Ski Course Design
- usaco Ski Course Design
- USACO 1.3 Ski Course Design
- USACO 1.3 Ski Course Design
- USACO 1.3 Ski Course Design
- USACO 1.3-Ski Course Design
- usaco 1.3 Ski Course Design
- USACO 1.3 Ski Course Design
- USACO 1.4 Ski Course Design
- USACO Ski Course Design 解题报告
- USACO Section 1.3 Ski Course Design
- USACO 1.3 Ski Course Design (枚举)
- USACO 1.3.6 Ski Course Design
- USACO Ski Course Design(枚举)
- USACO 1.3 Ski Course Design 转化
- USACO Ski Course Design 解题日志
- c++友元实现操作符重载
- Best Time to Buy and Sell Stock II
- 1001.Rational Sum (20)
- A1075 . PAT Judge (25)
- uva 12083 Guardian of Decency (二分图匹配)
- USACO Ski Course Design解析和C语言实现
- Hibernate入门
- 【LeetCode】(58)Length of Last Word(Easy)
- swust oj 2297 逆序数 (dp)
- canvas 基本点理解
- 关于setTimeout函数中的闭包问题
- AsyncTask基本原理
- 回文词
- 堆排序算法