O(∩_∩)O~

NOIP赛前常用模板代码总结

1:堆代码(以小根堆作为example)

procedure put(x:longint);
var e:longint;
begin
	inc(len); tree[len]:=x;
	e:=len;
	while e>1 do 
	begin
		if tree[e>>1]>tree[e] then 
		begin
			swap(tree[e>>1],tree[e]);
			e:=e>>1;
		end
		else break;
	end;
end;

function get:longint;
var e,son:longint;
begin
	get:=tree[1]; 
	tree[1]:=tree[len]; dec(len);
	e:=1;
	while (e<<1<=len) or (e<<1+1<=len) do 
	begin
		if (e<<1+1>len) or (tree[e<<1]<tree[e<<1+1]) then son:=e<<1
		else son:=e<<1+1;
		if tree[e]>tree[son] then 
		begin
			swap(tree[e],tree[son]);
			e:=son;
		end
		else break;
	end;
end;





posted @ 2017-11-01 19:25  =Ying=  阅读(266)  评论(0编辑  收藏  举报