複習一下splay,沒想到乙個簡單的模板寫了乙個多小時。。。
注:該模板比較短,所以可能會有些難以理解。該結構體包含插入與查詢操作。
#include
#include
#include
using
namespace
std;
const
int maxn = 100010;
struct splay_tree
void rotate(int p, bool t)
void splay(int x)
bool f = x==ch[p][0], f1 = p==ch[fa[p]][0], f2 = p==ch[fa[p]][1];
rotate(f?f1?p:x:f2?p:x, f);
rotate(x, f1);
}r = x;
}void insert(int x)
p = ch[p][x>=data[p]];
}splay(pn);
}void find(int x)
};
模板篇 伸展樹Splay Tree(此坑待填)
已填坑 請移步 splay?伸展。splay tree?伸展樹。遇事不決問度娘。從前,有種東西叫bst binary search tree,二叉查詢樹 各位都聽說過吧?此bst能較為高效的查詢資料。所以是查詢樹嘛 而它卻有乙個致命的缺點!常常會被卡成一條鏈。不是鏈的時候樹也會很高。效率很難維持住o...
splay tree旋轉操作 hdu 1890
很神奇的旋轉操作。目前沒看到其他資料結構能實現這個功能。平衡樹不好處理區間操作,線段樹很難旋轉。splay tree搞這個就很簡單了。下面用的這個模板跑了700ms,好慢,估計是刪除操作太費時了,是時候去找找其他更快的模板了。include include include include using...
靜態鄰接表模板
在做圖有關的題目,在一些情況下鄰接矩陣耗費空間較大 動態開闢的鄰接表又耗時耗記憶體,這時候你可能需要乙個靜態鄰接表!靜態鄰接表在各種圖的演算法當中也是有一席之地的,比如利用堆優化的dij演算法求最短路 spfa等等 下面給出我的靜態鄰接表模板 includeusing namespace std c...