PBDS學習筆記 一

2022-07-30 15:00:15 字數 4151 閱讀 3444

目錄堆

紅黑樹

平板電視庫學習筆記。總結乙份偏向acm應用的pbds庫筆記。
//首先需要以下標頭檔案以及命名空間

#include #include using namespace __gnu_pbds;

cc_hash_tableh1; //拉鍊法處理衝突

gp_hash_tableh2; //探測法處理衝突

codevs 1230

#include #include #include using namespace __gnu_pbds;

using namespace std;

int main()

while(m--)

return 0;

}

首先需要標頭檔案

#include
#include #include #include #include using namespace __gnu_pbds;

using namespace std;

int data, n;

char opt[10];

int main()

for(int i = 1; i <= n; i ++ ) else else }}

}return 0;

}

咕咕咕~~~,代補,今天主要想學平衡樹部分。
聽說可以實現名次樹和自定義函式。偷懶的時候代替splay,比賽不能用還能拿來對拍
#include #include #include using namespace __gnu_pbds;

using namespace std;

typedef tree, rb_tree_tag, tree_order_statistics_node_update> rbtree;

/// int型別

/// less, greater比較器

/// rb_tree_tag 和 splay_tree_tag 選擇樹的型別

/// tree_order_statistics_node_update 結點更新

/// insert, erase

/// order_of_key rank

/// find_by_order() kth

/// lower_bound() 前繼, >=x 最小的迭代器

/// upper_bound() 後繼 >x 最小的迭代器

/// a.join(b) b併入a,前提是兩顆樹的取值範圍不相交

/// a.split(v, b) key <= v的屬於a,其他屬於

/// 注意,插入的元素會去重,如set

#include #include #include using namespace __gnu_pbds;

using namespace std;

const int maxn = 3000000 + 10;

int price, menu[maxn], cnt[maxn];

typedef tree, rb_tree_tag, tree_order_statistics_node_update> rbtree;

int n, opt, x;

rbtree tre;

int main()

if(opt == 2)

continue;

}if(opt == 3) else if(cnt[res] == 0) else }}

return 0;

}

順便付上正常的splay的解法,有點長,平板電視真好用

#include #include #include using namespace __gnu_pbds;

using namespace std;

const int maxn = 1000000 + 10;

int price, menu[maxn], cnt[maxn];

templateinline bool nextint(t &n)

templateinline void out(t n)

int len = 0, data[20];

while(n)

if(!len) data[len++] = 0;

while(len--) putchar(data[len]+48);

}struct splay_tree

inline void init(int father, int lchild, int rchild, int key, int cnt, int sz)

} tre[maxn];

int sign, root;

inline void init()

inline bool judge(int x)

inline void update(int x)

if(tre[x].childs[1]) }}

inline void rotate(int x) else

tre[z].childs[ tre[z].childs[1] == y ] = x, tre[x].father = z;

update(y);

}inline void splay(int x,int goal)

}root = x;

}inline void insert_node(int x)

int now = root, father = 0;

while(1)

father = now;

if(x > tre[now].key) else

if(now == 0) else

update(father);

splay(sign, 0);

break;}}

}inline int pre()

return now;

}inline int next()

return now;

}inline int find_rank(int x)

else

if(x == tre[now].key)

ans += tre[now].cnt;

now = tre[now].childs[1];}}

}inline int find_by_order(int x) else

if(x <= sum)

x -= sum;

now = tre[now].childs[0];}}

}inline int find_rankx(int x) else

if(x <= sum)

x -= sum;

now = tre[now].childs[1];}}

}inline void del(int x)

if(!tre[root].childs[0] && !tre[root].childs[1])

if(!tre[root].childs[0])

if(!tre[root].childs[1])

int pre_node = pre(), old_root = root;

splay(pre_node, 0);

tre[root].childs[1] = tre[old_root].childs[1];

tre[ tre[old_root].childs[1] ].father = root;

tre[old_root].init();

update(root);

}inline bool find(int x)

if(x == tre[now].key)

if(x > tre[now].key) else }}

} tre;

int n, opt, x;

int main()

if(opt == 2)

continue;

}if(opt == 3) else if(cnt[res] == 0) else }}

return 0;

}

學習筆記一

lisp 最重要的一種執行模式之一 repl that endless cycle of reading,evaluating,and printing is why it s called the read eval print loop or repl.第乙個lisp程式 在repl模式下執行l...

學習筆記 一

什麼是seo?搜尋引擎優化 search engine optimization,簡稱seo 是一種利用搜尋引擎的搜尋規則來提高目的 在有關搜尋引擎內的排名的方式。深刻理解是 通過seo這樣一套基於搜尋引擎的營銷思路,為 提供生態式的自我營銷解決方案,讓 在行業內佔據領先地位,從而獲得品牌收益。研究...

學習筆記一

今天兩節課,也就是兩個問題的分析裝配線排程問題和矩陣鏈相乘ai,j中的 i,j 分別表示的是第 i 條線路的第 j 個步驟,每個線路每條步驟都有不同的用時,還有t i j中的 i,j 表示的就是從第 i 條線路第 j 步到達另外一條線路的第 j 1 步要用的時間,我們可以用如下 表示每一步花費的時間...