甲斐性のない男が機械学習とか最適化とかを綴るブログスマートフォン用の表示で見る甲斐性のない男が機械学習とか最適化とかを綴るブログうどんくらいしか食べる気がしない2018-11-26競プロとかに使うアルゴリズム実装メモ(二分探索、2次元累積和、しゃくとり法)はじめにアルゴリズムメモ第3段です。今回は二分探索法、2次元累積和、しゃくとり法と様々な問題に使える汎用的なアルゴリズムを書いていきます。値計算を純粋仮想関数とし、上記アルゴリズムをテンプレートメソッドパターンで実装。以上の値が入っているindexを求める問題。master蟻本に二分探索の例として載っている問題。広義単調減少関数なので二分探索法が使える。求まる抽象クラスの実装このアルゴリズムはストラテジーパターンで実装する。計算する関数オブジェクト受け取り、それに応じた部分和を求める。1);}具体的な問題を解く実装の計算として、上記アルゴリズムに関数オブジェクトを渡す。2問題はリンクを参照。存在する個数を返す関数とすれば2次元累積和で解ける。同じになるまで繰り返す抽象クラスの実装こちらもテンプレートメソッドパターンで実装する。上述の通り上位区間条件と部分区間条件を分けて考えるので、それぞれ抽象クラスを作る。しゃくとり法で解ける。2部分区間条件型のしゃくとり法で解けると気付くのが難しい問題。気づいてしまえば、普通にしゃくとり法を適用するだけ(部分区間を数え上げる問題なので、何も考えずしゃくとり法を適用してACしちゃったって人も結構いるかも)。しゃくとり法で解けるかは解説参照。おいて、条件が成立している場合としている。pointerを動かすという処理になっている。指示しているインデックスの値を足すこと(XORを取ること)に当たる。0;}おわりに今回は勉強のため、本質的なアルゴリズムを記述した抽象クラスと実際の問題を解く具象クラスを分けましたが、実際のコンテスト時はそんなことせずに、普通に書いた方が速いと思います。)注目記事はてなブログをはじめよう!YamagenSakamさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。