笛卡爾樹模版

複雜度O(n)O(n)
原理在這
對於節點(k(序號),w(權重)):k 符合二叉搜索樹性質,w符合堆性質
例題在這

int n,ind=0;
int sta[maxn],lson[maxn],rson[maxn],w[maxn];

void dkertree(){
	for(int i=1;i<=n;++i){
		int tmp=ind;
		while(ind&&w[sta[tmp]]>w[i]){
			--tmp;
		}
		if(tmp) rson[sta[tmp]]=i;
		if(tmp<ind) lson[i]=sta[tmp+1];
		sta[++tmp]=i;
		ind=tmp;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章