一、介紹
這是一篇趕工趕出來並且隨時會更新的備份文章,裡面匯集了我曾學過的所有高階(也就是太長了我記不住)演算法的模板。大部分直接從以前的文章裡蒯過來,所以對於任意乙份模板,都說不定將來再次翻閱的時候忍受不了當時的格式/命名/寫法等等而進行修改。
二、目錄
1、網路流dinic演算法
2、tarjan演算法
3、倍增lca
4、ac自動機
5、主席樹
6、bkdrhash
三、正文
1、網路流dinic演算法
1 #include 2 #include 34#define maxn 205
5#define maxm 205
6#define inf 0x3f3f3f3f78
int m, n, u, v, f, q[maxn * maxn], h[maxn], d[maxn], o = 1
, ans;910
struct
edge e[maxm << 1
];13
14int min(int a, int
b) 17
18void add(int u, int v, int
f) , h[u] =o;20}
2122
bool
bfs()
31 head++;32}
33return d[n] != 0;34
}3536int dfs(int o, int
mif) 46}
47return
res;48}
4950
intmain()
2、tarjan演算法
1 #include 23#define maxn 500005
4#define maxm 50000556
intn, m, u[maxn], v[maxn], tw[maxn], ts, p, to, tb[maxn], th[maxn];
7int
w[maxn], b[maxn], s, h[maxn], o, lik[maxn];
8int
dfn[maxn], low[maxn], ins[maxn], st[maxn], tot, t, tim;
9int
f[maxn], ans;
1011
struct
edge e[maxm], te[maxm];
1415
int min(int a, int
b) 18
19int max(int a, int
b) 22
23void add(int u, int v, int
t) , th[u] =to;
25else o++, e[o] = (edge) , h[u] =o;26}
2728
void
init()
3536
void tarjan(int
o) 43
if (dfn[o] ==low[o]) 47}
4849
void
rebuild()
56 f[s] =w[s];57}
5859
void dfs(int
o) 65}66
67int
main()
3、倍增lca
1void
prep() 78
intlca_h()
15while (x !=y)
20return
x;21 }
4、ac自動機
1 #include 2 #include 34#define maxm 100000556
intt, n, tot, q[maxm], ls, l, r;
7char s[55
], ch[maxm];89
struct
tree t[maxm];
1213
void
insert()
20 t[o].x++;21}
2223
void
getf()
39 of =t[of].f;40}
41if (!of) t[v].f =r;42}
43 q[tail++] =v; 44}
45 head++;46}
47}4849
intfind()
58return
ans;59}
6061
intmain()
71return0;
72 }
5、主席樹
1 #include 2 #include 3using
namespace
std;45
#define maxn 10000567
intt, n, m, l, r, k, tot, root[maxn], b[maxn], lik[maxn];89
struct
num a[maxn];
1213
struct
cmpw
17} cw;
1819
struct
cmpn
23} cn;
2425
struct
tree t[maxn * 20
];28
29void
chg()
3536
void build(int o, int l, int r, int w, int
x) 43
44int query(int rl, int rr, int l, int r, int
k) 49
50int
main() 63}
64return0;
65 }
6、bkdrhash
1#define x 131
2#define mod 1000000007
3int h[maxn]; char
a[maxn];
4void
gethash()
樹的各種演算法大集錦2
判定一棵二叉樹是否為完全二叉樹 bool is bitree b else 如果出隊元素為空,檢查其後是否有非空結點 return true 完全二叉樹的定義是 具有n個結點的完全二叉樹與滿二叉樹中的編號從1 n的結點一一對應。演算法思想 採用層次遍歷的方法,讓所有的結點入隊 包括空結點 當遇到空節...
前端知識點大集錦
doctype位於文件最前面,處於標籤之前,用來告知瀏覽器該用什麼文件型別規範來解析這個文件.用正確的標籤做正確的事.html語義化讓頁面的內容結構化,便於瀏覽器 搜尋引擎解析 利於seo優化 便於閱讀維護理解.行內元素 a span img input select i.塊級元素 h1 h6 p ...
排序演算法大集錦 插入類 直接插入排序
這一系列部落格的特點就是 給出每趟排序的結果 本來想著好好寫一下過程,弄個什麼的,不過覺得網上的解析太多了,都比較好。演算法導論 上面那個比喻,比做打撲克牌的插入新牌,就比較形象。所以這些部落格就算是對自己的總結吧。include void insertsort int m,int n int i,...