USACO 1.3.6 Ski Course Design[滑雪课程设计]
先说说思路:
这题比上一道坑人的wormholes简单多了!我一看到这题,“XXX设计”,还以为要用到什么dp呢,没想到是水题
用两层循环,第一层循环相差17中的上界,第二层遍历所有的山峰计算答案。并不断更新ans。
每座山峰分两种,第一种是大于i需要将它变矮的,第二种是小于i-17需要增加质量的。
相对于上一道题,这道题是PJ组T1,上一道算是TG组D1T2了。
代码很简单,轻松搞定。。
题目简要概述:
给出N个数(1<=N<=100),让你适当改变这些数的大小,使它们中最大数和最小数差不超过17。每改变一个数需要花费改变数量的平方块钱,比如说让这个数增加3要花费9块钱,让这个数减少5要花费25块钱,请输出使它们最大数和最小数差不超过17的最小花费
输入N+1行,第一行一个数N,第2至N+1行一行一个数。输出最小花费。
题目翻译:(用初中英语老师教的那种直译法,语句不通顺别让语文老师揍我来。。)
滑雪课程设计
农民John在他的农场上有N个山丘(1 <= N <= 1000),每一个山丘都有一个在0-100之间的整数的高度。在冬天,自从这里下了大量的雪,农民John一如既往地开启了一个滑雪训练营。
不幸的是,农民John才发现了一个新的税在下一年将要被实施用于滑雪训练营。小心地读完了规则之后,然而,他发现一个滑雪营要求最高和最低的山峰之间的差距被严格限制在17的规定。因此,如果他缩短他的最高的山峰并增加质量来增加他的比较爱的山峰的高度,农民John可以避免支付税收。
如果该边一座山峰x单位的高度花费x^2单位的钱,农民John最少要花多少钱?
农民John只能改变一座山峰的高度一次,所以每座山丘的总花费是它的原始高度和最终高度的差的平方。农民John只想要改变每座山峰的高度一个整数。
程序名:skidesign
输入格式:
第1行:整数N。
第2行至第1+N行:每一行包含一座山丘的高度。
样例输入(文件skidesign.in) :
5
20
4
1
24
21
输入描述:
农民John有五座山丘,海拔高度是1,4,20,21和24。
输出格式:
农民John需要支付来改变他的山峰的高度最小的价钱,所以最高山丘和最低山丘的最小差距是17单位。
第1行:
样例输出(文件skidesign.out):
18
输出描述:
农民John保持高度为4,20和21的山峰的高度。他给高度为1的山峰增加质量,将它变为高度4,(花费=3^2=9)。他将高度为24的山峰缩短为21,同样花费为3^2=9。
/*
ID:aaabbbr1
LANG:C++
TASK:skidesign
*/
#include <stdio.h>
int a[1001],n,ans=0;
int main()
{
freopen("skidesign.in","r",stdin);
freopen("skidesign.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
int ans=10000001;
for(int i=17;i<=100;i++)//keep distance from (i-17) to i
{
int tmp=0;
for(int j=1;j<=n;j++)//calc all the hills
{
if(a[j]<i-17)//it is too low
tmp=tmp+(i-17-a[j])*(i-17-a[j]);
if(a[j]>i)//it is too high
tmp=tmp+(a[j]-i)*(a[j]-i);
}
if(tmp<ans)ans=tmp;
}
printf("%d\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
评测结果:
USER: DONE DONE [aaabbbr1]
TASK: skidesign
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.000 secs, 4176 KB]
Test 2: TEST OK [0.000 secs, 4176 KB]
Test 3: TEST OK [0.000 secs, 4176 KB]
Test 4: TEST OK [0.000 secs, 4176 KB]
Test 5: TEST OK [0.000 secs, 4176 KB]
Test 6: TEST OK [0.000 secs, 4176 KB]
Test 7: TEST OK [0.000 secs, 4176 KB]
Test 8: TEST OK [0.000 secs, 4176 KB]
Test 9: TEST OK [0.000 secs, 4176 KB]
Test 10: TEST OK [0.000 secs, 4176 KB]
All tests OK.
YOUR PROGRAM ('skidesign') WORKED FIRST TIME! That's fantastic
-- and a rare thing. Please accept these special automated
congratulations.
然后下面是测试数据...测试数据太长了...
官方给的“ANALYSIS”代码:(也不难懂,只是i循环的下界)
#include <fstream> using namespace std; int n,hills[1000]; int main()
{
ifstream fin("skidesign.in");
fin >> n;
for (int i=0; i<n; i++)
fin >> hills[i];
fin.close(); // brute-force search
// try all elevation intervals from (0,17) to (83,100)
int mincost=1000000000;
for (int i=0; i<=83; i++)
{
// calculate the cost for elevation interval (i,i+17)
int cost=0,x;
for (int j=0; j<n; j++)
{
// if hill is below the interval
if (hills[j]<i)
x=i-hills[j];
// if hill is above the interval
else if (hills[j]>i+17)
x=hills[j]-(i+17);
// if hill is int the interval
else
x=0;
cost+=x*x;
}
// update the minimum cost
mincost=min(mincost,cost);
} ofstream fout("skidesign.out");
fout << mincost << "\n";
fout.close();
}
USACO 1.3.6 Ski Course Design[滑雪课程设计]的更多相关文章
- 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design
P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...
- 【USACO 1.3】Ski Course Design
n个点(n<=1000)大小范围[0,100],改变一些点的值,使得极差不超过17,代价为改变值的平方. 枚举修改后的最低高度low,维护最小代价. /* TASK: skidesign LAN ...
- USACO Section 1.3 Ski Course Design 解题报告
题目 题目描述 有N座山,每座山都有一个高度,现在由于农夫想避税,所以想把这些山的高度进行一些改变,使得最高的山与最低的山之间的高度差不超过17.每座山最多只能改变一次高度,每次改变高度都会产生一定的 ...
- [题解]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 ...
- 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 ...
- 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 ...
- USACO 滑雪课程
#include<cstdio> #include<iostream> using namespace std; int T,S,N,maxd; ],lv[],next[],f ...
- 【USACO】滑雪课程
滑雪课程贝西去科罗拉多州去滑雪,不过还她不太会玩,只是个能力为 1 的渣渣.贝西从 0 时刻进入滑雪场,一到 T 时刻就必须离开.滑雪场里有 N 条斜坡,第 i 条斜坡滑行一次需要 Di 分钟,要求游 ...
- 【USACO2009 Open】滑雪课程ski
[USACO2009 Open]滑雪课程 Ski Lessons Time Limit: 1000 ms Memory Limit: 131072 KBytes Description 约翰请贝西去科 ...
随机推荐
- 使用cython把python编译so
1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...
- spring 框架整合
struts hibernate spring 先贴出框架整合需要的maven <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...
- CSS——常用
1.超链接样式 a:link {color: #FF0000} /* 未访问的链接 */a:visited {color: #00FF00} /* 已访问的链接 */a:hover {color: ...
- 基于ActiveMQ的Topic的数据同步——消费者持久化
前面一章中介绍了activemq的初步实现:基于ActiveMQ的Topic的数据同步——初步实现 下面来解决持久化订阅的问题: (1)使用queue,即队列时,每个消息只有一个消费者,所以,持久化很 ...
- android手机分辨率的一些说明
Android上常见度量单位 px(像素):屏幕上的点,绝对长度,与硬件相关 in(英寸):长度单位 mm(毫米):长度单位 pt(磅):1/72英寸,point dp(与密度无关的像素):一种基于屏 ...
- Codeforces 1108E (Array and Segments) 线段树
题意:给你一个长度为n的序列和m组区间操作,每组区间操作可以把区间[l, r]中的数字都-1,请选择一些操作(可以都不选),使得序列的最大值和最小值的差值尽量的大. 思路:容易发现如果最大值和最小值都 ...
- Maven 导包后,在Maven Dependencies 里面却没有相应的包
1 问题描述 在1处显示成功,但是在2处却没有相应的包 2 问题原因 查看pom.xml的源码,看你的依赖是否和我的方框中标签是一样的,有的会多出一个 xxxupdate 的标签(我这里给出的是正确 ...
- iOS 本地加载js文件
#import "RootViewController.h" @interface RootViewController ()<UIWebViewDelegate> @ ...
- JavaWeb面试题 有用
ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获取数据,然后用JavaScript来操作DOM从而更新页面的局部显示. Ajax的优点: 1.最大的一点是页面 ...
- Mat类
1.Mat类 早期的opencv中,使用IplImage和CvMat数据结构来表示图像.IplImage和 CvMat 都是c语言的结构.使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何 ...