原创 Treap 堆樹

與AVL樹操作類似,代碼更簡單 #include "stdio.h" #include "stdlib.h" #include "time.h" typedef struct _Node{ int data; int fix; s

原创 hdu 2586 Tarjan離線

參考上一篇文章。這題建圖有點不知道怎麼下手,稀裏糊塗也過了。 現在想想Tarjan離線就是DFS+並查集,不難 #include "stdio.h" #include "string.h" #include "stdlib.h" #de

原创 hdu 3487

做了一天……內牛滿面…… 參考資料: http://dongxicheng.org/structure/splay-tree/ http://blog.csdn.net/liuwei_nefu/article/details/590186

原创 hdu 2190

DP dp[i][j]表示,第i列,以方式j結束時的情況數。 #include "stdio.h" #include "string.h" void main(){ int c, n, i; int dp[31][2]; //方式

原创 LCA Tarjin 並查集 離線

以前瞭解的Tarjin算法是用來求連通分量,在這裏是用來求最近公共祖先 並查集用過,很有意思的工具。Kraskal算法是並查集最經典的應用。首先初始化集合,每個元素爲單個集合。集合,我們需要選出一個代表,這個代表的性質是set[u] =

原创 RMQ DP

最原始的DP,空間和時間複雜度O(n^2)。在線 #include "stdio.h" #include "string.h" #define M 100 #define MIN(a, b) ((a)<(b)?(a):(b)) in

原创 RMQ問題 樹狀數組

用樹狀數組解決RMQ問題,請看參考資料,作者用Java實現 參考資料:http://www.cnblogs.com/ljsspace/archive/2011/08/10/2133514.html 下面是仿照用C實現: #include

原创 hdu 1540 線段樹

還是要有想象力…… 這題需要一個棧,用來保存摧毀的順序。可能出現一個地點,被摧毀多次,而重建時,出棧,只有第一次需要重建,後面再出棧,發現已經是建好的,就不需要再重建 例如:摧毀順序是 5 2 4 5,重建時,5先出棧,重建。然後4、2依