欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

滑雪课程设计Ski Course Design

发布时间:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 滑雪课程设计Ski Course Design 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度。在冬天,因为山上有丰富的积雪,约翰经常开办滑雪训练营。

不幸的是,约翰刚刚得知税法在滑雪训练营方面有新变化,明年开始实施。在仔细阅读法律后,他发现如果滑雪训练营的最高和最低的山峰海拔高度差大于17就要收税。因此,如果他改变山峰的高度(使最高与最低的山峰海拔高度差不超过17),约翰可以避免支付税收。

如果改变一座山x单位的高度成本是x^2单位,约翰最少需要付多少钱?约翰只愿意改变整数单位的高度。

输入输出格式

输入格式:
第一行:一个整数n

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

输出格式:
约翰需要支付修改山海拔高度的总金额,最高和最低的山峰间高度差最多17。

输入输出样例

输入样例#1:
5
20
4
1
24
21

输出样例#1:
18

说明
约翰保持高度为4、20和21的山的高度。他增高高度为1的山、变成高度4(花费 3 ^ 2 = 9)。他降低了高度为24的山变成高度21也花费3 ^ 2 = 9。
.
.
.
.
.
分析
我们暴力枚举修改后的山峰高度的最大值,每次算一个最小值就可以了
.
.
.
.
.
程序:

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() {int a[2000],n,ans=2147483647;scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);int x=a[1],y=a[n];for (int j=x;j<=y;j++){int sum=0;for (int i=1;i<=n;i++){if (a[i]-j>17) sum+=(a[i]-j-17)*(a[i]-j-17); if (a[i]<j) sum+=(a[i]-j)*(a[i]-j);} ans=min(sum,ans);}printf("%d",ans); }

转载于:https://www.cnblogs.com/YYC-0304/p/10292816.html

总结

以上是生活随笔为你收集整理的滑雪课程设计Ski Course Design的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。