kopricky アルゴリズムライブラリ

概要

Academic

競技プログラミングよりも学問に近いと思われるコードを置いています
(例) 線形時間 RMQ, 木幅の厳密計算, 最大流 Push Relabel, 一般グラフの動的連結性 etc...

Binary Search Tree

平衡二分探索木関連のコードを置いています. RBST と SplayTree のコードを置いています. 決定的なものが気になる方は他の人の AVL 木や赤黒木の実装を参考にしてください.
(例) RBST Query, RBST Set

Classic Problem

いくつかの有名問題のコードを置いています.
有名問題は挙げればキリがないので、そのうちの一部を適当に並べてみたという感じです.
(例) LPS, LCS, C4 find, etc...

Computation (Basic)

計算系(雑) のアルゴリズムのうち基本的なもののコードを置いています.
(例) mod 逆元, zeller の公式, etc...

Computation (Advanced)

計算系のアルゴリズムのうち発展的なもののコードを置いています.
(例) 中国剰余定理, ミラーラビン, スライド最小値, etc...

Data Structure (Basic)

データ構造のアルゴリズムのうち基本的なもののコードを置いています.
なお SegmentTree は SegmentTrees に置いています.
(例) BIT, Sparse Table, Trie 木, etc...

Data Structure (Advanced)

データ構造のアルゴリズムのうち発展的なもののコードを置いています.
(例) Convex Hull Trick, 2次元LIS, Wavelet Matrix, etc...

Data Structure (OnGraph)

グラフを対象としたデータ構造のアルゴリズムのコードを置いています.
(例) Union Find, LCA, HL分解, etc...

FFTs

FFT(高速フーリエ変換)関連のコードを置いています.
(例) FFT, NTT, FWHT

Graph Decomposition

グラフの分解に関するアルゴリズムのコードを置いています.
(例) 2点(辺)連結成分分解, 重心分解, なもりグラフ, etc...

Graph (SP, MST)

グラフの最短距離および最小全域木を求めるアルゴリズムを置いています.
(例) Kruskal, Prim, Dijkstra, etc...

Matrix

行列演算系のコードを置いています.
(例) 行列, 行列(64bit高速化)

Misc

他に入れるところがないようなコードを置いています
(例) サイコロ, int128 の入出力, 入出力の高速化, etc...

Network Flow

フローアルゴリズムのコードを置いています.
(例) 最大流, 最小費用流, 最大マッチング, etc...

Original Container

自作の List, Set, Map, UnorderedSet, UnorderedMap の実装を置いてます.

Original Type

(任意精度)多倍長整数, 精度保証付き浮動小数点数, 有理数型のコードを置いています.

Segment Trees

自分はセグ木をモノイド上の演算として実装しない人間なので Basic には色々なクエリのパターンのコードを置いています(煩雑). SegmentTreeBeats も一部実装したので置いてあります.
その他には領域木や Dynamic Segment Tree などのコードが置いてあります.

String

文字列関連のアルゴリズムのコードを置いています.
(例) KMP, Z-algorithm, manacher,etc...

Syntax Analysis

構文解析のコードを置いています.
(例) 四則演算の Parser, 構文木, 式の区間のParse

Asobiba

自分が適当に考えた問題に対してそれを効率的に解くアルゴリズムのコードを置いています.

For Python

My Algorithm の一部を Python に移植したコードを置いています.