目錄堆
紅黑樹
平板電視庫學習筆記。總結乙份偏向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 步要用的時間,我們可以用如下 表示每一步花費的時間...