src/cplib/collections/segtree_var

    Dark Mode
Search:
Group by:
  Source   Edit

Types

SegmentTree[T; Elem] = object
  default: T
  merge: proc (x: T; y: T): T
  arr*: seq[Elem]
  lastnode: int
  length: int
  Source   Edit

Procs

proc `$`[T](self: SegmentTree[T, SegmentTreeElem[T]]): string
  Source   Edit
proc `$`[T](self: SegmentTreeElem[T]): string
  Source   Edit
proc `%=`[T](self`gensym10: var SegmentTreeElem[T]; v`gensym10: T)
  Source   Edit
proc `&=`[T](self`gensym8: var SegmentTreeElem[T]; v`gensym8: T)
  Source   Edit
proc `**=`[T](self`gensym14: var SegmentTreeElem[T]; v`gensym14: T)
  Source   Edit
proc `*=`[T](self`gensym5: var SegmentTreeElem[T]; v`gensym5: T)
  Source   Edit
proc `+=`[T](self`gensym3: var SegmentTreeElem[T]; v`gensym3: T)
  Source   Edit
proc `-=`[T](self`gensym4: var SegmentTreeElem[T]; v`gensym4: T)
  Source   Edit
proc `//=`[T](self`gensym11: var SegmentTreeElem[T]; v`gensym11: T)
  Source   Edit
proc `/=`[T](self`gensym6: var SegmentTreeElem[T]; v`gensym6: T)
  Source   Edit
proc `<<=`[T](self`gensym13: var SegmentTreeElem[T]; v`gensym13: T)
  Source   Edit
proc `>>=`[T](self`gensym12: var SegmentTreeElem[T]; v`gensym12: T)
  Source   Edit
proc `[]=`[T](self: var SegmentTree[T, SegmentTreeElem[T]]; index: Natural;
              val: T)
  Source   Edit
proc `[]`[T](self: var SegmentTree[T, SegmentTreeElem[T]]; index: Natural): var SegmentTreeElem[
    T]
  Source   Edit
proc `[]`[T](self: var SegmentTree[T, SegmentTreeElem[T]];
             segment: HSlice[int, int]): T
  Source   Edit
proc `^=`[T](self`gensym7: var SegmentTreeElem[T]; v`gensym7: T)
  Source   Edit
proc `|=`[T](self`gensym9: var SegmentTreeElem[T]; v`gensym9: T)
  Source   Edit
proc get[T](self: var SegmentTree[T, SegmentTreeElem[T]]; q_left: Natural;
            q_right: Natural): T
半解区間[q_left,q_right)についての演算結果を返します。   Source   Edit
proc get[T](self: var SegmentTree[T, SegmentTreeElem[T]];
            segment: HSlice[int, int]): T
  Source   Edit
proc get_all[T](self: SegmentTree[T, SegmentTreeElem[T]]): T
[0,len(self))区間の演算結果をO(1)で返す   Source   Edit
proc initSegmentTree[T](n: int; merge: proc (x, y: T): T; default: T): SegmentTree[
    T, SegmentTreeElem[T]]
  Source   Edit
proc initSegmentTree[T](v: seq[T]; merge: proc (x, y: T): T; default: T): SegmentTree[
    T, SegmentTreeElem[T]]
セグメントツリーを生成します。 vに元となるリスト、mergeに二つの区間をマージする関数、デフォルトに単位元を与えてください。   Source   Edit
proc len[T](self: SegmentTree[T, SegmentTreeElem[T]]): int
  Source   Edit
proc max_right[T](self: SegmentTree[T, SegmentTreeElem[T]]; l: int;
                  f: proc (l: T): bool): int
  Source   Edit
proc min_left[T](self: SegmentTree[T, SegmentTreeElem[T]]; r: int;
                 f: proc (l: T): bool): int
  Source   Edit
proc update[T](self: var SegmentTree[T, SegmentTreeElem[T]]; index: Natural;
               val: T)
xの要素をvalに変更します。   Source   Edit

Converters

converter convertTo[T](self: SegmentTreeElem[T]): T
  Source   Edit

Templates

template newSegWith(V, merge, default: untyped): untyped
  Source   Edit