Akibawww.slideshare.netまとめるとセグ木は各ノードにどのようなデータをもたせるかどのような操作でノードのデータを更新するか区間からデータを取り出す際にどのような操作を行うかによって様々な機能が実現できる応用力が高いデータ構造です。実装コードはまとめて最後に貼ります。各処理でやっていることをざっくり書いていきます。初期化する際には以下を行います。ラムダ式を使って実行したい操作を渡します。含まれるまで子ノードに分割していくライブラリ以下がセグ木のライブラリです。(ある大きな整数のひとつ)として扱います。返すことを実現します。長さを求めることを高速に行うことができます。実装ローリングハッシュのC++での実装です。ハッシュの衝突には注意が必要です。頂点のを連結するような木を全域木と言います。辺にコストがある場合、使われる辺のコストを最小にする木を最小全域木と言います。最小全域木を求めるアルゴリズムとしてクラスカル法とプリム法と呼ばれるアルゴリズムがあります。今回はこれらをC++で実装しました。実装は省略してあります。二部グラフ二部グラフとは頂点集合を二つに分割したときに、それぞれの集合内の頂点同士を結ぶ辺が存在しないグラフのことです。ある頂点を選択したとき、その頂点に隣接する頂点は別の集合に属することになります。二部グラフであることと奇数長サイクルを含まないことは同値であり、問題の考察ポイントとなることが多いです。二部グラフ判定を行うコードです。C++で実装しています。グラフが連結ならば以下のコード一度で二部グラフ判定を行うことができますが、連結でない場合はすべての頂点において探索する必要があることに注意が必要です。以下を実現するデータ構造です。場所の値を加算していく。BITのライブラリです。}};ライブラリの動作確認に以下の問題が使えます。二分木の枝分かれに従い二分探索することで実現できます。適用して累積和と値の更新を高速に行うことができます。をつようにして管理します。}};ライブラリの動作確認に以下の問題が使えます。見つけ次第更新していきます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。