競技プログラミングをするときのまとめ。
| 名称 | 問題 | 計算量 |
|---|---|---|
| テンプレート | - | |
| 名称 | 問題 | 計算量 |
|---|---|---|
| BFS | 幅優先探索(2次元格子) | $O(V + E)$ |
| Dijkstra | 単一始点最短路 | $O(E\log V)$ |
| Warshall-Floyd | 全点対間最短路 | $O(V^{3})$ |
| Prim | 最小全域木 | $O(E\log V)$ |
| Kruskal | $O(E\log E)$ | |
| Primal Dual | 最小費用流 | $O(FE\log V)$ |
| Dinic | 最大流 | $O(V^{2}E)$ |
| Bipartite Matching | 二部マッチング | $O(VE)$ |
| Topological sort | トポロジカルソート | $O(E+V)$ |
| Strongly Connected Components | 強連結成分分解 | $O(E+V)$ |
| 名称 | 問題 | 計算量 |
|---|---|---|
| Tarjan | 最小共通祖先 | 構築 $O(V\log V + E)$ クエリ $O(\log V)$ |
| Centroid Path Decomposition | 重心分解 | $O(E)$ |
| 木の直径 | $O(E)$ | |
| 木の高さ | $O(E)$ | |
| 名称 | 問題 | 計算量 |
|---|---|---|
| 組み合わせ 写像12相 |
nCr, 逆元 | |
| エラトステネスの篩 | 素数列 | $O(N\log \log N)$ |
| 繰り返し二乗法 | べき乗 | $O(\log N)$ |
| 素因数分解 | $O(\sqrt {N})$ | |
| 多倍長演算 | - | |
| 名称 | 問題 | 計算量 |
|---|---|---|
| テンプレート | - | |
| 名称 | 問題 | 計算量 |
|---|---|---|
| Segment Tree | 区間加算,最小,最大,和 | クエリ $O(\log N)$ |
| Binary Indexed Tree | 区間の和 | クエリ $O(\log N)$ |
| Union Find Tree | 集合演算 | 構築 $O(N)$ クエリ $O(\alpha)$ |
| RBST | 平衡二分探索木 | クエリ $O(\log N)$ |
| Wavelet Matrix | Wavelet 行列 | クエリ $O(\log N)$ |
| 名称 | 問題 | 計算量 |
|---|---|---|
| Rolling Hash | 一致判定, LCP | 構築 $O(N)$ クエリ $O(\log N)$ |
| Suffix Array | いろいろ | 構築 $O(N \log N)$ |
| 関数 | 機能 |
|---|---|
| *max_element(v.begin(), v.end()) | 最大値 |
| *min_element(v.begin(), v.end()) | 最小値 |
| count(v.begin(), v.end(), x) | 配列中の $x$ の個数 |
| accumulate(v.begin(), v.end(), 0) | 配列の総和 |
| sort(v.begin(), v.end(); v.erase(unique(v.begin(), v.end()), v.end()) |
配列中の重複要素削除 |
| lower_bound(v.begin(), v.end(), x) | $v_i \le x$ である最左位置 |
| upper_bound(v.begin(), v.end(), x) | $v_i \lt x$ である最左位置 |
| do{ ... }while(next_permutation(v.begin(), v.end())); | 順列 |
| partial_sum(v.begin(), v.end(), v.begin()) | 累積和 |
| reverse(v.begin(), v.end()) | 逆順 |
| v.erase(remove(v.begin(), v.end(), x), v.end()) | 配列中の $x$ を削除 |
| replace(v.begin(), v.end(), x, y) | 配列中の $x$ を $y$ に置換 |
| 名称 | 概要 |
|---|---|
| オンライン整数列大辞典 | 整数列データベース |
| WolframAlpha | 計算知識エンジン |