algorithm

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub drken1215/algorithm

algorithm

さまざまなアルゴリズムとデータ構造の実装例

データ構造やネットワークフローなど、さまざまな分野のアルゴリズムを C++20 で実装しています。
リンクが付いていないものは、実装予定であることを意味します。
アルゴリズム系の研究開発やプログラミングコンテストへの参加といった場面で、「実装例」「ライブラリ」として使用することを想定しています。

目次

分類 内容 具体例
DATA STRUCTURE : BASIC 基礎的なデータ構造 Union-Find など
DATA STRUCTURE : SEGMENT 区間クエリに強いデータ構造 セグメント木など
DATA STRUCTURE : ADVANCED その他の高度なデータ構造 永続データ構造など
FLOW フローに関するアルゴリズム Dinic 法など
GEOMETRY 計算幾何アルゴリズム 円の交点など
GRAPH グラフに関するアルゴリズム 強連結成分分解など
MATH : LINEAR ALGEBRA 線形代数のアルゴリズム 行列計算など
MATH : COMBINATORICS 組合せ論的アルゴリズム modint、Nim など
MATH : NUMBER THEORY 整数論的アルゴリズム 素因数分解など
OPTIMIZATION : SEARCH 探索ベースの最適化アルゴリズム 二分探索など
OPTIMIZATION : CONVEXITY 離散凸性に関するアルゴリズム slope trick など
POLYNOMIAL FPS や多項式のアルゴリズム 多項式補間、FPS 合成など
STRING 文字列に関するアルゴリズム Suffix Array など
TREE 木上のデータ構造とアルゴリズム Euler ツアーなど
OTHERS その他 サイコロなど

難易度表記の目安

NoviSteps グレード基準

 

基礎的なデータ構造 (DATA STRUCTURE : BASIC)

Union-Find など、基礎的なデータ構造の実装です。

Union-Find

ヒープ・キュー

ハッシュ・ハッシュテーブル

順序付き集合

その他

 

区間系データ構造 (DATA STRUCTURE : SEGMENT)

セグメント木や BIT など、区間クエリに強いデータ構造の実装です。

セグメント木

さまざまなセグメント木

BIT (Binary Indexed Tree)

セグメント木・BIT の応用

Sparse Table

ウェーブレット行列

Splay 木

赤黒木

その他平衡二分探索木

 

高度なデータ構造 (DATA STRUCTURE : ADVANCED)

その他の高度なデータ構造の実装です。

高度なヒープ

動的データ構造

並列データ構造

永続データ構造

その他

ㅤ

フロー (FLOW)

フロー関連のアルゴリズムです。

最大流

最小カット

最小費用流

最小費用 b-flow

二部マッチング

重み付き二部マッチング

二部マッチングの応用

劣モジュラ関数のグラフ表現

特殊なグラフ上の最小費用流の slope trick 帰着

最小費用流の応用

 

幾何 (GEOMETRY)

幾何アルゴリズムです。

基本要素

点, 線分, 三角形などの位置関係

射影, 交差判定, 距離

直線や円の交点

多角形

円

ボロノイ図

三次元幾何

その他

 

グラフ (GRAPH)

グラフアルゴリズムです

グラフ

グラフ探索

連結成分分解

最短路問題

全域木, 路

グラフ上の指数時間アルゴリズム

一般グラフのマッチング

その他

 

線形代数 (MATH : LINEAR ALGEBRA)

行列計算など、線形代数に関するアルゴリズムです

体上の行列

環上の行列

行列式

F2 体上の線形代数

その他の行列アルゴリズム

さまざまな行列

 

組合せ数学 (MATH : COMBINATORICS)

数え上げやゲームなど、組合せ数学に関するアルゴリズムです。

Modint

二項係数

写像12相

その他の数

集合冪級数 (SPS)

ゲーム

その他

 

整数論 (MATH : NUMBER THEORY)

整数論的アルゴリズムです。

約数, 倍数

modpow, modinv

素数

原始根, 位数, 離散対数

エラトステネスの篩

乗法的関数

方程式

多倍長整数

有理数

その他

 

探索・最適化 (OPTIMIZATION : SEARCH)

探索や最適化に関するアルゴリズムです。

さまざまな全探索法

さまざまな動的計画法

さまざまな最適化技法

SAT

ヒューリスティック探索

指数時間アルゴリズム

ㅤ

離散凸性 (OPTIMIZATION : CONVEXITY)

離散凸性に関するアルゴリズムです。

区分線形凸関数の活用 1: Slope Trick

区分線形凸関数の活用 2: Min Plus Convolution

区分線形凸関数の活用 3: Convex Hull Trick

Li Chao Tree (一般関数は Pairwise Single Crossing 性を仮定)

行最小値問題・単一始点最短路問題

Monge 単一始点最短路問題

その他 Monge 性, L 凸性

さまざまなマトロイド

その他マトロイド, M 凸性

ㅤ

形式的冪級数・多項式 (POLYNOMIAL)

形式的冪級数や多項式に関するアルゴリズムです

FFT, NTT, Convolution

形式的冪級数 (FPS)

FPS のアルゴリズム

さまざまな FPS

多項式の基底変換

多項式のアルゴリズム

さまざまな値の高速計算

 

文字列 (String)

文字列アルゴリズムです。

構文解析

文字列検索

Suffix Array

さまざまな文字列アルゴリズム

さまざまな文字列データ構造

有名問題

その他

 

木 (Tree)

木上のクエリに答えるデータ構造や、木に関する問題を解くアルゴリズムの実装です

木

木の亜種 (Functional Graph など)

木 DP

Euler Tour

HL 分解

重心分解

toptree

さまざまな木

その他の問題

 

その他 (OTHERS)

その他のアルゴリズムです

入出力

典型処理

ソート

その他

 

コードテンプレート

 

License

These codes are licensed under CC0. CC0

Verification Status

DataStructure

Optimization

Others

.