洛谷P3650

https://www.luogu.org/problemnew/show/P3650

JDOJ 2393

https://neooj.com:8082/oldoj/problem.php?id=2393

题目描述

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

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

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

输入输出格式

输入格式:

第一行:一个整数n

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

输出格式:

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

输入输出样例

输入样例#1: 复制

5
20
4
1
24
21
输出样例#1: 复制

18

一开始想到的思路是直接做最大值最小值差之后平方,看完样例之后发现显然是不对的。
那么正解是什么呢?由此开始了痛苦的思考,发现此题的思路和动态规划类似(注意绝不是动态规划,没有无后效性质)。我们需要针对每一座山峰维护花钱的最小值。
思路也比较好理解,分两层枚举,第一层枚举所有山可能的高度(肯定会在最大值和最小值之间),第二层枚举实际每座山的高度,判断它们的差与17的关系,高于则全部砍掉,低于就砍掉差小于17的部分。
注意,层数不要弄反,第一层枚举的是高度,每一次枚举都要计算出当前高度的最小值,最后再取小即可。
ACcode:
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int a[];
int sum;
int ans=;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
sort(a+,a+n+,cmp);
for(int i=a[];i<=a[n];i++)
{
sum=;
for(int j=;j<=n;j++)
{
if(a[j]-i>)
sum+=(a[j]-i-)*(a[j]-i-);
if(a[j]<i)
sum+=(i-a[j])*(i-a[j]);
}
ans=min(sum,ans);
}
printf("%d",ans);
return ;
}

USACO Ski Course Design的更多相关文章

  1. USACO Ski Course Design 暴力

    从Min到Max范围内暴力一下即可. /* ID: wushuai2 PROG: skidesign LANG: C++ */ //#pragma comment(linker, "/STA ...

  2. USACO Ski Course Design解析和C语言实现

    题目大意: John农场有N(1=<N<=1000)小丘陵(山),它们高度的范围从0 到 100 但仅仅有当最大的高度差不大于17时.才干够避税.John对它们进行改造,从高的丘陵上取土放 ...

  3. [题解]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 ...

  4. 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 ...

  5. 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 ...

  6. 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  7. 【USACO 1.3】Ski Course Design

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

  8. USACO Section 1.3 Ski Course Design 解题报告

    题目 题目描述 有N座山,每座山都有一个高度,现在由于农夫想避税,所以想把这些山的高度进行一些改变,使得最高的山与最低的山之间的高度差不超过17.每座山最多只能改变一次高度,每次改变高度都会产生一定的 ...

  9. 「日常训练」「小专题·USACO」 Ski Course Design (1-4)

    题目 以后补 分析 mmp这题把我写蠢哭了 我原来的思路是什么呢? 每轮找min/max,然后两个决策:升min/降max 像这样子dfs找最优,然后花式剪枝 但是一想不对啊,这才1-4,哪有那么复杂 ...

随机推荐

  1. vue 使用JavaScript表达式

    vue使用JavaScript的运算方式 代码如下: <!doctype html> <html lang="en"> <head> <m ...

  2. Node.js 获取本机Mac地址

    首先我们要先加载一个包用于获取mac地址 npm install getmac 加载完毕会在node_modules文件夹下发现一个getmac文件夹,我们把对应的路径加载到程序中 源码如下: var ...

  3. github README.md创建不了

    在项目主页上,点击‘Add a README’按钮,如下图: 进入编辑界面,编辑好内容后,提交按钮的状态为灰化不可点击,如下图: 不知道为什么会出现这种情况,但是我无意中点击了Ctrl+Enter竟然 ...

  4. webpack与vue环境搭建(转载)

    原文:https://www.cnblogs.com/lgx5/p/10732016.html npm安装教程   一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理 ...

  5. markdown 希腊字母

    字母名称 大写 markdown原文 小写 markdown原文alpha A A α \alphabeta B B β \betagamma Γ \Gamma γ \gammadelta Δ \De ...

  6. 安装pip-9.0.1-py2.py3-none-any.whl

    pip的安装 1.从https://pypi.python.org/pypi/pip#downloads下载所需的.whl文件 2.将下载的文件放入Python的根目录 我的根目录是F:\Python ...

  7. Java-100天知识进阶-GC种类-知识铺(六)

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. 一.GC回收器的 4个指标: 1.Throughput,非gc时间与总运行时间的比重. ...

  8. python threading Future源码解析

    1. Future内部还是用了condition这个锁 2. Cancel # future在执行时,会一直更新这个状态 def cancel(self): """Can ...

  9. idea配置热加载

    第一步:添加依赖 spring-boot项目中引入如下依赖 <dependency> <groupId>org.springframework.boot</groupId ...

  10. win10怎么打开服务界面?

    在键盘上同时点击“win+R”键弹出运行界面,输入services.msc,按确定. 这时就弹出了服务的界面,如图: