skidesign解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  N座山,每座山高度是0到100的整数。我们要调整山高,让最高的山和最低的山高度差不超过17。
  将一座山的高度调整x,花费是x²。注意,本题只允许山高改变整数值。
【数据范围】
  1<=N<=1000
【输入样例】
  5
  20
  4
  1
  24
  21
【输出样例】
  18
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  这道题,关键在于想到怎么做,之后就毫无难度了。
  让山高的最大值与最小值差不大于17。如果你想着如何去逐步调整,那就复杂了,很难搞。
  但其实,可以换个思路,一步到位:将所有山高都调整到[l,r]的范围内,其中l+17==r。这很容易,只要将[0,l-1]的山变成l,[r+1,100]的山变成r即可,时间是线性的。而[l,r]的所有情况一共是大约100-17组,也是线性的。如此,便可在O(N²)内解决问题,其中N≈100-17。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  一遍AC。

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: skidesign
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; const int maxInt = (<<)-; int n,d[]; int js(int l,int r)
{
int cost=;
for(int i=;i<=l;++i) cost+=(l-i)*(l-i)*d[i];
for(int j=r;j<=;++j) cost+=(j-r)*(j-r)*d[j];
return cost;
} void change(int &r,int x) { if(x<r) r=x; } int main()
{
ifstream in("skidesign.in");
ofstream out("skidesign.out"); in>>n;
for(int i=,x;i<=n;++i) { in>>x; ++d[x]; } int cost=maxInt;
for(int l=,r;l<=-;++l)
{
r=l+;
change(cost,js(l,r));
}
out<<cost<<endl; in.close();
out.close();
return ;
}

USACO Section1.3 Ski Course Design 解题报告的更多相关文章

  1. USACO Section1.4 Mother's Milk 解题报告

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

  2. USACO Section1.2 Name That Number 解题报告

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

  3. USACO Section1.1 Friday the Thirteenth 解题报告

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

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

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

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

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

  8. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

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

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

随机推荐

  1. Linux修改文件permission可执行属性

    列出文件属性 ls -al 修改文件属性为可读.可写 sudo chmod -c 777 <your file name>

  2. leetcode: 数组

    1. longest-consecutive-sequence Given an unsorted array of integers, find the length of the longest ...

  3. IOS笔记 : 一些小技巧

    计算单元格高度,在自定义cell中 -(void) resizeTheHeight{ CGFloat contentWidth = 280; UIFont *font = [UIFont fontWi ...

  4. maven项目右键快捷方式,然后点击Run As

    在某一个maven项目右键快捷方式,然后点击Run As就可以发现几个Maven的命令: 1.Maven Build: 这个命令用于编译Maven工程,执行命令后会在target文件夹中的classe ...

  5. VMware 12安装Mac OS X 10.11

    去年写了一篇安装Mac OS X 10.10的文章,看到大家都想体验OS X,大多数都能成功,但也在其中发现了一些问题,所以更新一下,希望对大家有所帮助.   1048VMware 11安装Mac O ...

  6. 2295: KMP模式匹配 一(串)

    2295: KMP模式匹配 一(串) 时间限制: 1 Sec  内存限制: 128 MB提交: 210  解决: 97[提交][状态][讨论版][命题人:外部导入] 题目描述 求子串的next值,用n ...

  7. git 提交 src refspec master does not match any

    git init 产生的目录解释   error: src refspec master does not match any. 引起该错误的原因是,目录中没有文件,空目录是不能提交上去的 error ...

  8. C#中datatable的用法/传数据

    在开发中,我们常用到表类型数据,不同于string,int....那么datatable类型如何定义呢,具体怎么使用呢,代码如下: namespace Common.Table { using Sys ...

  9. 最大公约数(gcd模板)

    int gcd(int a,int b) { ) { int t=a%b; a=b; b=t; } return a; }

  10. 基于centos7实现的nfs

    NFS NFS(Network FileSystem,网络文件系统),最早由Sun公司所发展出来的,主要是通过网络让不同的主机.不同的操作系统,可以彼此分享个别档案,因此我们也可以简单把NFS看成是一 ...