NgLib::SparseTable(T)
Inherits Reference < Object
不変な数列 $A$ について、以下の条件を満たす演算を、区間クエリとして処理します。
- 結合則 : $(x \oplus y) \oplus z = x \oplus (y \oplus z)$
- 冪等性 : $x \oplus x = x$
前計算は $O(N \log{N})$ かかりますが、区間クエリには $O(1)$ で答えられます。
Constructors
Class methods
Instance methods
range の表す範囲の要素の総積 $\bigoplus_{i \in range} a_i$ を返します。
rmq = SparseTable(Int32).min([2, 7, 1, 8, 1])
rmq.prod(0...3) # => 1
range の表す範囲の要素の総積 $\bigoplus_{i \in range} a_i$ を返します。
$0 \leq l \leq r \leq n$ を満たさないとき、nil を返します。
rmq = SparseTable(Int32).min([2, 7, 1, 8, 1])
rmq.prod(0...3) # => 1
size
Source