競争力のあるプログラミングレポジトリ
競争力のあるプログラミングコンテストで広く使用されているC ++のアルゴリズムとデータ構造の収集。
次のトピックについて説明します。
範囲の更新とクエリ
- 範囲集約クエリ:
- バイナリインデックスツリー(ビット) :
- ポイント更新範囲クエリ
- 範囲更新範囲クエリ
- 統計クエリを注文します
- 2Dバイナリインデックスツリー
- セグメントツリー(セグツリー) :
- ポイント更新範囲クエリ
- 高速反復セグツリー
- 範囲更新ポイントクエリ - 怠zyな宣伝
- 範囲の最大サブセグメント合計
- 2Dセグメントツリー
- 動的セグメントツリー - 要素間の挿入/削除
- 動的セグメントツリー - セグメントを逆にします
- ソートツリーをマージします:
- ソートツリーをマージします
- ソートツリーをマージ - 統計を注文します
- スパーステーブル:
- MOアルゴリズム:
- 動的プログラミング:
- 動的プログラミングテンプレート:
- 標準的なDPの問題:
- 最長のサブシーケンス
- 最長のパリンドロミックサブシーケンス
- Levensteinの距離 /編集距離
- グラフ:
- 単一ソース最短パスアルゴリズム:
- 密なグラフのディクストラ
- 優先キューを使用したDijkstra
- kth dijkstraを使用したノード間の最短パス
- ベルマンフォードネガティブサイクル検出
- すべての最短パス:
- サイクル検出:
- 最小スパニングツリー:
- トポロジーソート /強く接続されたコンポーネント:
- Maxflow/Matching :
- Hopkroft Karp Maxマッチング
- ディニックマックスフロー
- その他:
- 木:木
- 先祖の質問:
- パスクエリ:
- まばらなテーブル *
- 重い光の分解加重ノード
- 重い光の分解加重エッジ
- その他:
- 木の直径
- 予約/ポストオーダースタンプ、それはサブツリーにありますか?
- バイナリ指数:
- バイナリ指数を使用してn^mを計算します
- 線形再発を解く
- 文字列:
- 文字列アルゴリズム:
- Zアルゴリズム
- KMPアルゴリズム
- ローリングストリングハッシュ
- 動的文字列のローリングストリングハッシュ
- 文字列データ構造:
- 並べ替え:
- 高速入力/出力、文字列/整数変換:
- その他データ構造:
- Disjointセット
- Disjoint Set(元に戻す操作をサポート)
- 更新付きMax/Min Priorityキュー
- XORの最大化/最小化のバイナリトライ
- bigint *
- 注文統計とランククエリのための拡張バイナリツリー
- 単調な優先キュー
- トリー
- 永続的なデータ構造:
- 永続的なセグメントツリー(セグツリー) :
- 永続的なセグメントツリー
- 永続的なセグメントツリー - 統計を注文します
- 番号理論アルゴリズム:
- プライマリティチェック:
- ふるい:
- エラトステネスのふるい
- 大規模な素数のセグメント化されたふるい
- 主要な要因をカウントします
- 多項式乗算:
- その他:
- 組み合わせとカタロニア - 要因前処理
- Mobeius関数
- オイラートティエンス機能
- Lucas theorm-組み合わせ
- 計算ジオメトリ:
- その他:
- x = 1:nのフロア(x)の合計
- 循環機能の合計 *
- すべての要素の前後に最も近い要素
- 長い長い整数を掛けます
- 長い長い整数を掛ける - オーバーフロー検出
- スキャンライン - 交差間隔をマージします