Mo's Algorithm https://ei1333.hateblo.jp/entry/2017/09/11/211011
[詳解]
#include "mo.hpp"
|
| Mo (int n) |
| コンストラクタ
|
|
void | add (int l, int r) |
| クエリ [l, r) を追加する
|
|
template<typename F1, typename F2, typename F3, typename F4, typename F5> |
void | execute (F1 &&add_left, F2 &&add_right, F3 &&del_left, F4 &&del_right, F5 &&out) |
| クエリを実行する
|
|
◆ Mo()
◆ add()
void Mo::add |
( |
int | l, |
|
|
int | r ) |
|
inline |
クエリ [l, r) を追加する
mo.hpp の 13 行目に定義があります。
◆ execute()
template<typename F1, typename F2, typename F3, typename F4, typename F5>
void Mo::execute |
( |
F1 && | add_left, |
|
|
F2 && | add_right, |
|
|
F3 && | del_left, |
|
|
F4 && | del_right, |
|
|
F5 && | out ) |
|
inline |
クエリを実行する
- 引数
-
add_left | add_left(i) i 番目の要素が左から加わるときの処理 |
add_right | add_right(i) i 番目の要素が右から加わるときの処理 |
del_left | del_left(i) i 番目の要素が左から抜けるときの処理 |
del_right | del_right(i) i 番目の要素が右から抜けるときの処理 |
out | out(i) i 番目のクエリの答えを求めたときの処理 |
- 覚え書き
- O(N sqrt(Q))
mo.hpp の 27 行目に定義があります。
この構造体詳解は次のファイルから抽出されました: