[USACO 2014 Jan Bronze]滑雪训练课程题解

。。开始做usaco的题目。。

先来一道铜组的切切。。

某人:

"你们如果要做USACO就要做金组和银组里面最难的,其它都太水了,做了没有益处。。“

可以我太水了。。。。只会做铜组。。

题目描述:

在Flover的农场里有N(1<=N<=1,000)座小山。小山都是整数高度,在0到100之间。在冬天,由于在山上满是皑皑白雪,Flover像往常一样组织了一个滑雪训练营。

但不幸的是,Flover刚刚发现了一个有关滑雪训练营的新税务。当仔细读完这个法律文件,他发现,滑雪训练营有官方规定:他财产上的 最高的山 和 最低的山 的高度差必须严格大于17(才需要交税)。所以,如果Flover缩短最高的山,并增加相对较矮的山的高度,就可以逃避交税(使得最高山和最低山的高度差最大为17)。

如果移动x单位的重量需要花费x^2个单位的金钱,那么Flover最少需要花费多少呢?Flover当然只愿意以整数为单位来改变每座山的高度。

看到这道题的时候想了想。。

后来发现时无脑枚举。。

一次AC

const shuru='test.in';
	  shuchu='test.out';
	  maxn=1001;
var	a:array[0..maxn] of longint;
	ans,tot,x,y,i,j,k,n:longint;
function min(a,b:longint):longint;inline;
begin
	if ab then exit(a);
	exit(B);
end;
procedure init;
begin
	readln(n);x:=maxlongint;y:=0;
	for i:=1 to n do 
	begin
		read(a[i]);
		x:=min(x,a[i]);
		y:=max(y,a[i]);
	end;
end;
procedure main;
begin
	init;
	if y-17<=x then begin
						writeln(0);
						halt;
					end;
	ans:=maxlongint;
	for j:=x to y-17 do
	begin
		tot:=0;
		for i:=1 to n do
		begin
			if a[i]j+17 then inc(tot,sqr(a[i]-j-17));
		end;
		ans:=min(tot,ans);
	end;
	writeln(ans);
end;
begin
	main;
end.



你可能感兴趣的:(usaco,枚举,2014)