POJ 2010 二叉堆 入門)

2021-06-08 20:56:34 字數 1643 閱讀 2199

好像這題二分也可以做……

話說這年頭寫堆都不用heapify 函式的?

program p2010;

const

maxc=100000;

maxn=19999;

maxaid=100000;

maxf=2000000000;

type

node=record

a,b:longint;

end;

heap=record

size:longint;

d:array[1..maxc] of longint;

end;

var n,c,f,i,j:longint;

a:array[1..maxc] of node;

h:heap;

before,after:array[1..maxc] of longint;

procedure swap(var a,b:longint);

var p:longint;

begin

p:=a;a:=b;b:=p;

end;

procedure qsort(l,r:longint);

var i,j:longint;

m,p:node;

begin

i:=l;

j:=r;

m:=a[(l+r) shr 1];

repeat

while a[i].am.a do dec(j);

if i<=j then

begin

swap(a[i].a,a[j].a);

swap(a[i].b,a[j].b);

inc(i);dec(j);

end;

until i>j;

if l1 do

begin

if d[i shr 1]>=d[i] then break;

swap(d[i shr 1],d[i]);

i:=i shr 1;

end;

end;

end;

procedure pop;

var i,j:longint;

begin

with h do

begin

d[1]:=d[size];

dec(size);

i:=1;

while i shl 1<=size do

begin

j:=i shl 1;

if (j=before[i]+after[i]+a[i].b then

begin

num:=i;

end;

if num=-1 then exit(-1);

exit(a[num].a);

end;

begin

while not seekeof do

begin

fillchar(h,sizeof(h),0);

read(n,c,f);

for i:=1 to c do read(a[i].a,a[i].b);

qsort(1,c);

writeln(main);

end;

end.

二叉樹入門

對二叉樹的儲存,即可採用順序儲存結構 陣列 也可採用鏈式儲存結構 鍊錶 在鏈式儲存結構中,每乙個節點都含有乙個資料域,兩個指標域 分別用來指向該節點的左 右子樹。利用這種節點構成的鏈式儲存結構稱為二叉鍊錶。為簡單起見,給定一資料集,以該資料集中的元素建立一完全二叉樹。這裡不考慮非完全二叉樹的情況。如...

二叉樹入門

樹是模擬實現樹幹和樹枝的一種資料結構,如同樹根一樣,樹結構都有乙個 根結點 根節點之下如同樹的樹枝一樣,可以擁有0到n個 子結點 也就是樹的 分支 如上圖。a就是這棵樹的根節點,b c就是結點a的子結點。也就是樹枝。每一根樹枝當然可以有小樹枝,也就是子節點本身可以擁有子結點。途中d和e是b的子結點。...

輸出二叉查詢樹poj 2418 二叉查詢樹

改章節朋友在深圳遊玩的時候突然想到的.近期就有想寫幾篇關於輸出二叉查詢樹的文章,所以回家到之後就奮筆疾書的寫出來發布了 二叉查詢樹 對於樹中的個每節點x,它的左子樹中的全部節點的值小於x的值,它的右子樹中的全部節點的值大於x的值 目題粗心 給出一些單詞 包括大小寫和格空 單詞可以重複湧現 單詞最多1...