algo — C++23 日本語リファレンス GitHub

Mo

クラス · Mo’s algorithm

struct Mo;

概要

Mo’s algorithm

構築・破棄

名前 説明 計算量
(constructor) 長さnの列に対するMoを構築する $O(1)$

メンバ関数

名前 説明 計算量
input 標準入力からq個の区間を追加する $O(q)$
add 半開区間を追加する 償却 $O(1)$
solve (1) 左右共通の追加・削除処理で全クエリを実行する
(2) 左右別の追加・削除処理で全クエリを実行する
クエリ数を $q$ として、整列は $O(q\log q)$、 コールバック呼び出しは $O((n+q)\sqrt q)$ 回

メンバの詳細

input

void input(int q, int origin = 1, bool closed = false);

標準入力からq個の区間を追加する

solve

// (1)
template <class F, class G, class H>
void solve(F add, G del, H answer);

// (2)
template <class F, class G, class H, class I, class J>
void solve(F add_left, G add_right, H del_left, I del_right, J answer);

(1) 左右共通の追加・削除処理で全クエリを実行する

(2) 左右別の追加・削除処理で全クエリを実行する

参照