From 8a46b30d233b65df8637dbade4fed9fb0a9aeea9 Mon Sep 17 00:00:00 2001 From: ei1333 Date: Sun, 26 May 2024 19:05:17 +0900 Subject: [PATCH] =?UTF-8?q?=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dynamic-point-add-rectangle-sum.md | 59 ++++++++++++++++++++++++ docs/dynamic-rectangle-add-point-get.md | 4 +- docs/static-point-add-rectangle-sum.md | 61 +++++++++++++++++++++++++ docs/static-rectangle-add-point-get.md | 10 ++-- 4 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 docs/dynamic-point-add-rectangle-sum.md create mode 100644 docs/static-point-add-rectangle-sum.md diff --git a/docs/dynamic-point-add-rectangle-sum.md b/docs/dynamic-point-add-rectangle-sum.md new file mode 100644 index 000000000..2594472a4 --- /dev/null +++ b/docs/dynamic-point-add-rectangle-sum.md @@ -0,0 +1,59 @@ +--- +title: Dynamic Point Add Rectangle Sum +documentation_of: //other/dynamic-point-add-rectangle-sum.hpp + +--- + +2 次元平面上に重み付きの点を追加するクエリと、長方形内に含まれる点の重みの総和を求めるいくつかのクエリに答えます。 + +# コンストラクタ + +```cpp +(1) DynamicPointAddRectangleSum< T, C >() +(2) DynamicPointAddRectangleSum< T, C >(int q) +``` + +`T` は座標が収まる型、$C$ は重みの総和が収まる型を指定してください。 + +(2) でクエリの個数 $q$ を指定した場合、領域を `reserve` するので少しだけ効率的です。 + +# add_point + +```cpp +void add_point(T x, T y, C w) +``` + +$(x, y)$ に重み $w$ の点を追加するクエリを追加します。 + +# 計算量 + +- $O(1)$ + +# add_query + +```cpp +void add_query(T l, T r, T d, T u) +``` + +$\lbrace (x,y):l \leq x \lt r, d \leq y \lt u\rbrace$ で表される長方形内にある点の重みの総和を求めるクエリを追加します。 + +## 制約 + +- $l \lt r$ +- $r \lt u$ + +# 計算量 + +- $O(1)$ + +# calculate_queries + +```cpp +vector calculate_queries() const +``` + +それぞれのクエリの答えを返します。$i$ 番目の要素は $i$ 番目に追加したクエリの答えが格納されます。 + +## 計算量 + +- $O(q \log^2 q)$ diff --git a/docs/dynamic-rectangle-add-point-get.md b/docs/dynamic-rectangle-add-point-get.md index 78e451b15..547006bce 100644 --- a/docs/dynamic-rectangle-add-point-get.md +++ b/docs/dynamic-rectangle-add-point-get.md @@ -39,7 +39,7 @@ $\lbrace (x,y):l \leq x \leq r, d \leq y \leq u\rbrace$ で表される重み $w void add_query(T x, T y) ``` -$(x, y)$ に含む長方形の重みの総和を求めるクエリを追加します。 +$(x, y)$ を含む長方形の重みの総和を求めるクエリを追加します。 # 計算量 @@ -55,4 +55,4 @@ vector calculate_queries() const ## 計算量 -- $O((n + q) \log^2 (n + q))$ +- $O(q \log^2 q)$ diff --git a/docs/static-point-add-rectangle-sum.md b/docs/static-point-add-rectangle-sum.md new file mode 100644 index 000000000..8c6516d0f --- /dev/null +++ b/docs/static-point-add-rectangle-sum.md @@ -0,0 +1,61 @@ +--- +title: Static Point Add Rectangle Sum +documentation_of: //other/static-point-add-rectangle-sum.hpp + +--- + +2 次元平面上に重み付きの点が与えられます。 + +長方形内に含まれる点の重みの総和を求めるいくつかのクエリに答えます。 + +# コンストラクタ + +```cpp +(1) StaticPointAddRectangleSum< T, C >() +(2) StaticPointAddRectangleSum< T, C >(int n, int q) +``` + +`T` は座標が収まる型、$C$ は重みの総和が収まる型を指定してください。 + +(2) で点の個数 $n$、クエリの個数 $q$ を指定した場合、領域を `reserve` するので少しだけ効率的です。 + +# add_point + +```cpp +void add_point(T x, T y, C w) +``` + +$(x, y)$ に重み $w$ の点を追加します。 + +# 計算量 + +- $O(1)$ + +# add_query + +```cpp +void add_query(T l, T r, $ d, $ u) +``` + +$\lbrace (x,y):l \leq x \lt r, d \leq y \lt u\rbrace$ で表される長方形内にある点の重みの総和を求めるクエリを追加します。 + +## 制約 + +- $l \lt r$ +- $r \lt u$ + +# 計算量 + +- $O(1)$ + +# calculate_queries + +```cpp +vector calculate_queries() const +``` + +それぞれのクエリの答えを返します。$i$ 番目の要素は $i$ 番目に追加したクエリの答えが格納されます。 + +## 計算量 + +- $O((n + q) \log (n + q))$ diff --git a/docs/static-rectangle-add-point-get.md b/docs/static-rectangle-add-point-get.md index 13c412b23..a647cd706 100644 --- a/docs/static-rectangle-add-point-get.md +++ b/docs/static-rectangle-add-point-get.md @@ -1,6 +1,6 @@ --- title: Static Rectangle Add Point Get -documentation_of: //other/static-point-add-rectangle-sum.hpp +documentation_of: //other/static-rectangle-add-point-get.hpp --- 2 次元平面上に重み付きの長方形が与えられます。 @@ -16,7 +16,7 @@ documentation_of: //other/static-point-add-rectangle-sum.hpp `T` は座標が収まる型、$C$ は重みの総和が収まる型を指定してください。 -(2) で長方形の個数 $n$、座標の個数 $q$ を指定した場合、領域を `reserve` するので少しだけ効率的です。 +(2) で長方形の個数 $n$、クエリの個数 $q$ を指定した場合、領域を `reserve` するので少しだけ効率的です。 # add_rectangle @@ -29,7 +29,7 @@ $\lbrace (x,y):l \leq x \leq r, d \leq y \leq u\rbrace$ で表される重み $w ## 制約 - $l \lt r$ -- $r \lt u$ +- $d \lt u$ # 計算量 @@ -41,9 +41,9 @@ $\lbrace (x,y):l \leq x \leq r, d \leq y \leq u\rbrace$ で表される重み $w void add_query(T x, T y) ``` -$(x, y)$ に含む長方形の重みの総和を求めるクエリを追加します。 +$(x, y)$ を含む長方形の重みの総和を求めるクエリを追加します。 -# 計算量 +## 計算量 - $O(1)$