堆-模板
Posted Mint-hexagram
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆-模板相关的知识,希望对你有一定的参考价值。
之前一直不想写的手写堆。
是大根堆模板,小根堆直接换一下转移的符号就行。
pile[maxn]是存储堆的数组,len是堆中元素的数量。
写法非常简单。
Code
void put(int k)
{
pile[++len]=k;
int pla=len;
while(pla>1)
{
int fa=pla/2;
if(pile[fa]>=pile[pla]) return;
swap(pile[fa],pile[pla]);
pla=fa;
}
}
int get()
{
int ans=pile[1];
pile[1]=tree[len--];
int pla=1;
while(pla*2<=len)
{
int son=pla*2;
if(son+1<=len&&pile[son]<pile[son+1]) son++;
if(pile[pla]>=pile[son]) break;
swap(pile[pla],pile[son]);
pla=son;
}
return ans;
}
以上是关于堆-模板的主要内容,如果未能解决你的问题,请参考以下文章