class NgLib::DynamicRectangleSum(T)
- NgLib::DynamicRectangleSum(T)
- Reference
- Object
Overview
変更されうる二次元配列 $A$ に対して、累積和 $\sum_{i=l_i}^{r_i-1} \sum_{j=l_j}^{r_j-1} A_i$ を計算します。
Defined in:
nglib/data_structure/dynamic_rectangle_sum.crConstructors
Instance Method Summary
- #[](y_range : Range(Int | Nil, Int | Nil), x_range : Range(Int | Nil, Int | Nil)) : T
- #[]=(i : Int, j : Int, val : T)
- #[]?(y_range : Range(Int | Nil, Int | Nil), x_range : Range(Int | Nil, Int | Nil)) : T | Nil
-
#add(y : Int, x : Int, val : T) : T
(y, x) の要素に val を足します。
-
#add?(y : Int, x : Int, val : T) : Bool
(y, x) の要素に val を足します。
- #csum : Array(Array(T))
-
#get(y_begin : Int, y_end : Int, x_begin : Int, x_end : Int) : T
累積和を返します。
-
#get(y_range : Range(Int | Nil, Int | Nil), x_range : Range(Int | Nil, Int | Nil)) : T
累積和を取得します。
-
#get?(y_begin : Int, y_end : Int, x_begin : Int, x_end : Int) : T | Nil
累積和を返します。
-
#get?(y_range : Range(Int | Nil, Int | Nil), x_range : Range(Int | Nil, Int | Nil)) : T | Nil
累積和を返します。
- #height : Int32
- #width : Int32
Constructor Detail
Instance Method Detail
(y, x) の要素に val を足します。
添字は 0-index です。
csum = DynamicRectangleSum.new(a)
csum.add(y, x, val) # => val
(y, x) の要素に val を足します。
添字は 0-index です。
加算に成功した場合 true
を返します。
csum = DynamicRectangleSum.new(a)
csum.add?(y, x, x) # => true
累積和を返します。
[y_begin, y_end), [x_begin, x_end) で指定します。
NOTE このAPIは非推奨です。Rangeで指定することが推奨されます。
累積和を取得します。
Range(y_begin, y_end), Range(x_begin, x_end) で指定します。
csum = DynamicRectangleSum.new(a)
csum.get(0...h, j..j + 2) # => 28
累積和を返します。
[y_begin, y_end), [x_begin, x_end) で指定します。
範囲内に要素が存在しない場合 nil を返します。
NOTE このAPIは非推奨です。Rangeで指定することが推奨されます。
累積和を返します。
[y_begin, y_end), [x_begin, x_end) で指定します。
範囲内に要素が存在しない場合 nil を返します。
csum = DynamicRectangleSum.new(a)
csum.get?(0...h, j..j + 2) # => 28
csum.get?(0...100*h, j..j + 2) # => nil