From 93b42cbe81d9a2fa537215a127a34fa1f4c6f6b5 Mon Sep 17 00:00:00 2001 From: Ariel Date: Wed, 6 Mar 2024 14:00:42 +0800 Subject: [PATCH] Create BIT2d.cc --- trees/BIT2d.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 trees/BIT2d.cc diff --git a/trees/BIT2d.cc b/trees/BIT2d.cc new file mode 100644 index 0000000..98cd7dd --- /dev/null +++ b/trees/BIT2d.cc @@ -0,0 +1,28 @@ +template +struct BIT2d { + int n, m; + vector> c; + BIT2d(size_t n, size_t m) : n(n), m(m), c(n + 1, vector(m + 1)) {} + void add(size_t i, size_t j, const T& k) { + while (i <= n) { + size_t j1 = j; + while (j1 <= m) { + c[i][j1] += k; + j1 += lowbit(j1); + } + i += lowbit(i); + } + } + T getsum(size_t i, size_t j) { + T res = {}; + while (i) { + size_t j1 = j; + while (j1) { + res += c[i][j1]; + j1 -= lowbit(j1); + } + i -= lowbit(i); + } + return res; + } +};