遅延評価セグメント木 [詳解]
#include "segtree_lazy.hpp"
公開型 | |
using | MonoidType = typename Monoid::Type |
using | OperatorType = typename Operator::Type |
公開メンバ関数 | |
SegTreeLazy ()=default | |
SegTreeLazy (int n) | |
要素数 n の遅延セグ木を構築する | |
SegTreeLazy (const vector< MonoidType > &v) | |
配列 v から遅延セグ木を構築する | |
void | set (int i, MonoidType x) |
i 番目の要素を x に更新する | |
void | apply (int l, int r, OperatorType x) |
区間 [l, r) に x を作用させる | |
MonoidType | fold (int l, int r) |
区間 [l, r) のモノイド積を返す | |
template<typename F> | |
int | find_right (int l, F f) |
区間 [l, x) のモノイド積が f を満たすような最大の x >= l を返す | |
template<typename F> | |
int | find_left (int r, F f) |
区間 [x, r) のモノイド積が f を満たすような最小の x<=r を返す | |
int | size () |
MonoidType | operator[] (int i) |
遅延評価セグメント木
segtree_lazy.hpp の 9 行目に定義があります。
using SegTreeLazy< Monoid, Operator, mapping >::MonoidType = typename Monoid::Type |
segtree_lazy.hpp の 10 行目に定義があります。
using SegTreeLazy< Monoid, Operator, mapping >::OperatorType = typename Operator::Type |
segtree_lazy.hpp の 11 行目に定義があります。
|
default |
|
inline |
要素数 n の遅延セグ木を構築する
segtree_lazy.hpp の 15 行目に定義があります。
|
inline |
配列 v から遅延セグ木を構築する
segtree_lazy.hpp の 22 行目に定義があります。
|
inline |
i 番目の要素を x に更新する
segtree_lazy.hpp の 31 行目に定義があります。
|
inline |
区間 [l, r) に x を作用させる
segtree_lazy.hpp の 40 行目に定義があります。
|
inline |
区間 [l, r) のモノイド積を返す
segtree_lazy.hpp の 62 行目に定義があります。
|
inline |
区間 [l, x) のモノイド積が f を満たすような最大の x >= l を返す
f(Monoid::id())=true
が成り立つ必要がある segtree_lazy.hpp の 80 行目に定義があります。
|
inline |
区間 [x, r) のモノイド積が f を満たすような最小の x<=r を返す
f(Monoid::id())=true
が成り立つ必要がある segtree_lazy.hpp の 119 行目に定義があります。
|
inline |
segtree_lazy.hpp の 154 行目に定義があります。
|
inline |
segtree_lazy.hpp の 155 行目に定義があります。