USACO Section1.3 Ski Course Design 解题报告

    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。

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

【代码】

 1 /*
 2 ID: icedrea1
 3 PROB: skidesign
 4 LANG: C++
 5 */
 6
 7 #include <iostream>
 8 #include <fstream>
 9 using namespace std;
10
11 const int maxInt = (1<<31)-1;
12
13 int n,d[101];
14
15 int js(int l,int r)
16 {
17     int cost=0;
18     for(int i=0;i<=l;++i) cost+=(l-i)*(l-i)*d[i];
19     for(int j=r;j<=100;++j) cost+=(j-r)*(j-r)*d[j];
20     return cost;
21 }
22
23 void change(int &r,int x) { if(x<r) r=x; }
24
25 int main()
26 {
27     ifstream in("skidesign.in");
28     ofstream out("skidesign.out");
29
30     in>>n;
31     for(int i=1,x;i<=n;++i) { in>>x; ++d[x]; }
32
33     int cost=maxInt;
34     for(int l=0,r;l<=100-17;++l)
35     {
36         r=l+17;
37         change(cost,js(l,r));
38     }
39     out<<cost<<endl;
40
41     in.close();
42     out.close();
43     return 0;
44 }
时间: 2024-10-08 20:46:09

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

USACO Section1.4 Mother&#39;s Milk 解题报告

milk3解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 有三个桶,容量分别是A.B.C,开始C桶是满的. 你可以不断将某个桶的奶倒到另一个桶里,但只允许全倒过去,或者将后者倒满,前者留下

USACO Section1.2 Name That Number 解题报告

namenum解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 你有一个手机,键盘如下所示: 2: A,B,C 5: J,K,L 8: T,U,V 3: D,E,F 6: M,N,O 9:

USACO Section1.1 Friday the Thirteenth 解题报告

friday解题报告 —— icedream61 博客园(转载请注明出处) ------------------------------------------------------------------------------------------------------------------------------------------------[题目] 据说曾经的黑色星期五是13号?本题让我们看看13号与星期五是否比与别的日子更有缘. 给出非负数n,请告诉我在“1900年1月1

[题解]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 elevation in the range 0 .. 100. In the winter, since there is abundant snow on these hills, FJ routinely operates a ski training camp. Unfortunately, FJ h

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 elevation in the range 0 .. 100. In the winter, since there is abundant snow on these hills, FJ routinely operates a ski training camp. Unfortunately, FJ h

USACO 1.3 Ski Course Design (枚举)

描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度.在冬天,因为山上有丰富的积雪,约翰经常开办滑雪训练营. 不幸的是,约翰刚刚得知税法在滑雪训练营方面有新变化,明年开始实施.在仔细阅读法律后,他发现如果滑雪训练营的最高和最低的山峰海拔高度差大于17就要收税.因此,如果他改变山峰的高度(使最高与最低的山峰海拔高度差不超过17),约翰可以避免支付税收. 如果改变一座山x单位的高度成本是x^2单位,约翰最少需要付多少钱?约翰只愿意改变整数单位的高

[LeetCode]Add and Search Word - Data structure design,解题报告

目录 目录 思路 思路 AC代码 思路 Design a data structure that supports the following two operations: void addWord(word) bool search(word) search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can repr

USACO Section1.5 Prime Palindromes 解题报告

pprime解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 求a到b之间的所有回文素数(即又是素数又是回文数的数).[数据范围] 5<=a,b<=100,000,000[输入样例] 5

USACO Section1.3 Wormholes 解题报告

wormhole解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 一个人在二维坐标系上走,方向永远是+x.此坐标系中有N个虫洞(N是偶数). 虫洞这东西,一旦两个配成一对,便可以形成“传送门