题目

题目描述

有N座山,每座山都有一个高度,现在由于农夫想避税,所以想把这些山的高度进行一些改变,使得最高的山与最低的山之间的高度差不超过17。每座山最多只能改变一次高度,每次改变高度都会产生一定的费用,如果改变了X高度,那么将会产生X^2的费用,现在需要计算最少需要支付的金额。

数据范围

1 <= N <= 1000,每座山的高度在0~100之间的一个整数,改变前后山的高度都是整数。

样例输入

首先输入一个N,代表有N座山,下面N行数字代表每座山的高度

5
20
4
1
24
21

样例输出

18

解题思路

首先找到最高的山与最低的山,最终的最优结果肯定是改变之后最矮的山的高度位于最大值与最小值之间,利用这个思路,直接枚举最大值与最小值之间的所有的高度h,然后使所有的山的高度都位于区间[h, h+17],最终选一个最小代价方案。时间复杂度为O(100 * 1000)

解题代码

/*
ID: yinzong2
PROG: skidesign
LANG: C++11
*/
#define MARK
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 1000+10;
const int INF = 0x3fffffff; int hills[MAXN];
int n; int main() {
#ifdef MARK
freopen("skidesign.in", "r", stdin);
freopen("skidesign.out", "w", stdout);
#endif // MARK
while(~scanf("%d", &n)) {
int _min = INF, _max = 0;
for(int i = 0; i < n; i++) {
scanf("%d", &hills[i]);
_min = min(_min, hills[i]);
_max = max(_max, hills[i]);
}
int l,r;
int ans = INF;
for(int i = _min; i <= _max; i++) {
l = i;
r = i+17;
int sum = 0;
for(int j = 0; j < n; j++) {
if(hills[j] < l) {
sum += ((l-hills[j])*(l-hills[j]));
}
if(hills[j] > r) {
sum += ((hills[j]-r)*(hills[j]-r));
}
}
ans = min(ans, sum);
}
printf("%d\n", ans);
}
return 0;
}

USACO Section 1.3 Ski Course Design 解题报告的更多相关文章

  1. USACO Section1.3 Ski Course Design 解题报告

    skidesign解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  2. USACO Section 1.2 Name That Number 解题报告

    题目 题目描述 在一个农场里面,每一头牛都有一个数字编号,但是现在这些牛不喜欢这种编号,它们想把这些数字编号转化成为可以接受的字母的形式.数字与字母的转换表如下: 2: A,B,C 5: J,K,L ...

  3. USACO Section 1.1 Friday the Thirteenth 解题报告

    题目 题目描述 黑色星期五是否真的是一件不同寻常的事情?按理来说每个月的13号可能是星期一,或者是星期二...或者是星期天,但是黑色星期五的存在让我们不禁开始猜想,难道每个月的13号刚好是星期五的频率 ...

  4. USACO Section 1.1 Greedy Gift Givers 解题报告

    题目 问题描述 有若干个朋友,朋友之间可以选择互相赠送一些有价值的礼物.一个人可以选择将一部分钱分给若干个朋友,例如某人送给其他两个人钱,总共赠送3元,两个人平均分,原本应该是每人1.5元,但是只能取 ...

  5. USACO Section 1.4 Mother's Milk 解题报告

    题目 题目描述 有三个牛奶桶,三个桶的容积分别是A,B,C,最小为1,最大为20.刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的.我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还 ...

  6. USACO Section2.1 Sorting a Three-Valued Sequence 解题报告

    sort3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  7. 【USACO 1.3】Ski Course Design

    n个点(n<=1000)大小范围[0,100],改变一些点的值,使得极差不超过17,代价为改变值的平方. 枚举修改后的最低高度low,维护最小代价. /* TASK: skidesign LAN ...

  8. USACO 1.3.6 Ski Course Design[滑雪课程设计]

    先说说思路: 这题比上一道坑人的wormholes简单多了!我一看到这题,“XXX设计”,还以为要用到什么dp呢,没想到是水题 用两层循环,第一层循环相差17中的上界,第二层遍历所有的山峰计算答案.并 ...

  9. 【LeetCode】170. Two Sum III - Data structure design 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 数组+字典 平衡查找树+双指针 日期 题目地址:htt ...

随机推荐

  1. 一些牛人分享的ios技巧,保留着

    摘要:记录一些网上非常牛的人写的博文.收藏起来. 以备日后需要时学习备用. 1:iOS中UIWebView的Javascript与Objective-C通信 http://imchao.net/201 ...

  2. asp下sha1加密函数

    sha1.asp文件 <script language="javascript" type="text/javascript" runat="s ...

  3. SVG中image tag的高亮

    今天下午和晚上全部在实验室调试scs可视化,下午主要时间在调试字符云图的东西,不过感觉没有提升,还是不好看,囧~~ 把力道图中的线条给调整了,调细之后,好看了不少. 因为需要多个区域交互,也就是需要高 ...

  4. android CTS测试

    CTS认证是获得Google推出的Android系统中Android Market服务的前提 CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出A ...

  5. KNN算法的补充

    文本自动分类技术是文字管理的基础.通过快速.准确的文本自动分类,可以节省大量的人力财力:提高工作效率:让用户快速获得所需资源,改善用户体验.本文着重对KNN文本分类算法进行介绍并提出改进方法. 一.相 ...

  6. Android状态选择器用法总结

    原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体 ...

  7. sql语句--查询语句(MySQL)

    1.截取字符串 left(str, length),right(str, length),substring(str, pos, length) 原文:http://www.jb51.net/arti ...

  8. SCANF SCANF_S

    今天在看C的教程的时候,用VS2013写了一小段代码 scanf("%f",&w); 提示需要在预编译器里添加 _CRT_SECURE_NO_WARNINGS,  百度了下 ...

  9. 常用的linux系统监控命令整理

    找到最耗CPU的java线程ps命令 命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的 ...

  10. MFC通过ODBC连接Mysql程序

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...