Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ei1333 committed May 26, 2024
1 parent 0b504fd commit 8a46b30
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 7 deletions.
59 changes: 59 additions & 0 deletions docs/dynamic-point-add-rectangle-sum.md
Original file line number Diff line number Diff line change
@@ -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<C> calculate_queries() const
```

それぞれのクエリの答えを返します。$i$ 番目の要素は $i$ 番目に追加したクエリの答えが格納されます。

## 計算量

- $O(q \log^2 q)$
4 changes: 2 additions & 2 deletions docs/dynamic-rectangle-add-point-get.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)$ を含む長方形の重みの総和を求めるクエリを追加します

# 計算量

Expand All @@ -55,4 +55,4 @@ vector<C> calculate_queries() const

## 計算量

- $O((n + q) \log^2 (n + q))$
- $O(q \log^2 q)$
61 changes: 61 additions & 0 deletions docs/static-point-add-rectangle-sum.md
Original file line number Diff line number Diff line change
@@ -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<C> calculate_queries() const
```

それぞれのクエリの答えを返します。$i$ 番目の要素は $i$ 番目に追加したクエリの答えが格納されます。

## 計算量

- $O((n + q) \log (n + q))$
10 changes: 5 additions & 5 deletions docs/static-rectangle-add-point-get.md
Original file line number Diff line number Diff line change
@@ -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 次元平面上に重み付きの長方形が与えられます。
Expand All @@ -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

Expand All @@ -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$
# 計算量
Expand All @@ -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)$

Expand Down

0 comments on commit 8a46b30

Please sign in to comment.