src/cplib/collections/range_reverse_lazysegtree

    Dark Mode
Search:
Group by:
  Source   Edit

Types

RangeReverseLazySegmentTree[S; F] = ref object
  root: RangeReverseLazySegmentTreeNode[S, F]
  length: int
  merge: proc (x, y: S): S
  default: S
  mapping: proc (f: F; x: S): S
  composition: proc (f, g: F): F
  id: F
  Source   Edit

Procs

proc `$`[S, F](self: RangeReverseLazySegmentTree[S, F]): string
  Source   Edit
proc `[]=`[S, F](self: RangeReverseLazySegmentTree[S, F]; index: Natural;
                 value: S)
  Source   Edit
proc `[]`[S, F](self: RangeReverseLazySegmentTree[S, F]; index: BackwardsIndex): S
  Source   Edit
proc `[]`[S, F](self: RangeReverseLazySegmentTree[S, F]; index: int): S
  Source   Edit
proc `[]`[S, F](self: RangeReverseLazySegmentTree[S, F];
                segment: HSlice[int, int]): S
  Source   Edit
proc apply[S, F](self: RangeReverseLazySegmentTree[S, F]; index: int; f: F)
  Source   Edit
proc apply[S, F](self: RangeReverseLazySegmentTree[S, F]; l, r: int; f: F)
  Source   Edit
proc apply[S, F](self: RangeReverseLazySegmentTree[S, F];
                 segment: HSlice[int, int]; f: F)
  Source   Edit
proc erase[S, F](self: RangeReverseLazySegmentTree[S, F]; index: int)
index 番目の要素を削除する。期待 O(log N)。   Source   Edit
proc erase[S, F](self: RangeReverseLazySegmentTree[S, F]; l, r: int)
半開区間 [l, r) を削除する。木の操作は期待 O(log N)。 削除した K 個のノードの解放には別途 O(K) かかりうる。   Source   Edit
proc erase[S, F](self: RangeReverseLazySegmentTree[S, F];
                 segment: HSlice[int, int])
  Source   Edit
proc fold[S, F](self: RangeReverseLazySegmentTree[S, F]): S
  Source   Edit
proc fold[S, F](self: RangeReverseLazySegmentTree[S, F]; l, r: int): S
  Source   Edit
proc fold[S, F](self: RangeReverseLazySegmentTree[S, F];
                segment: HSlice[int, int]): S
  Source   Edit
proc get[S, F](self: RangeReverseLazySegmentTree[S, F]; index: int): S
  Source   Edit
proc get[S, F](self: RangeReverseLazySegmentTree[S, F]; l, r: int): S
  Source   Edit
proc get[S, F](self: RangeReverseLazySegmentTree[S, F];
               segment: HSlice[int, int]): S
  Source   Edit
proc get_all[S, F](self: RangeReverseLazySegmentTree[S, F]): S
  Source   Edit
proc initRangeReverseLazySegmentTree[S, F](n: int; merge: proc (x, y: S): S;
    default: S; mapping: proc (f: F; x: S): S; composition: proc (f, g: F): F;
    id: F): RangeReverseLazySegmentTree[S, F]
  Source   Edit
proc initRangeReverseLazySegmentTree[S, F](v: openArray[S];
    merge: proc (x, y: S): S; default: S; mapping: proc (f: F; x: S): S;
    composition: proc (f, g: F): F; id: F): RangeReverseLazySegmentTree[S, F]
  Source   Edit
proc insert[S, F](self: RangeReverseLazySegmentTree[S, F]; index: int; value: S)
index の直前に value を挿入する。末尾には index = len を指定する。 期待 O(log N)。挿入前の区間更新は新しい要素には作用しない。   Source   Edit
proc len[S, F](self: RangeReverseLazySegmentTree[S, F]): int
  Source   Edit
proc max_right[S, F](self: RangeReverseLazySegmentTree[S, F]; l: int;
                     f: proc (x: S): bool): int
f(get(l, r)) が真となる最大の r。期待 O(log N)。 f(default) = true で、区間を伸ばしたとき真から偽への変化が単調であること。   Source   Edit
proc min_left[S, F](self: RangeReverseLazySegmentTree[S, F]; r: int;
                    f: proc (x: S): bool): int
f(get(l, r)) が真となる最小の l。期待 O(log N)。 f(default) = true で、区間を伸ばしたとき真から偽への変化が単調であること。   Source   Edit
proc reverse[S, F](self: RangeReverseLazySegmentTree[S, F]; l, r: int)
  Source   Edit
proc reverse[S, F](self: RangeReverseLazySegmentTree[S, F];
                   segment: HSlice[int, int])
  Source   Edit
proc toSeq[S, F](self: RangeReverseLazySegmentTree[S, F]): seq[S]
  Source   Edit
proc update[S, F](self: RangeReverseLazySegmentTree[S, F]; index: Natural;
                  value: S)
  Source   Edit

Iterators

iterator items[S, F](self: RangeReverseLazySegmentTree[S, F]): S
  Source   Edit

Templates

template newRangeReverseLazySegWith(vOrN, merge, default, mapping, composition,
                                    id: untyped): untyped
  Source   Edit