Fenwick Tree - Binary Indexed Tree
Tài liệu về cây chỉ số nhị phân
- https://vnoi.info/wiki/algo/data-structures/fenwick.md
- https://cp-algorithms.com/data_structures/fenwick.html
Cập nhật điểm truy vấn đoạn - querysum
C++
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 1;
const int oo = 1e18;
const int MOD = 1e9 + 7;
int BIT[N];
void update(int p, int val) {
for (int i = p; i < N; i += i & -i)
BIT[i] += val;
}
int get(int p) {
int sum = 0;
for (int i = p; i; i -= i & -i)
sum += BIT[i];
return sum;
}
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
int x; cin >> x;
update(i, x);
}
while (q--) {
int k;
cin >> k;
if (k == 1) {
int p, val;
cin >> p >> val;
update(p, val);
}
else {
int l, r;
cin >> l >> r;
cout << get(r) - get(l - 1) << "\n";
}
}
}
Cập nhật đoạn truy vấn điểm - CSES Range Update Queries
C++
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 1;
const int oo = 1e18;
const int MOD = 1e9 + 7;
int BIT[N];
int n, q;
void update(int p, int val) {
for (int i = p; i <= n; i += i & -i)
BIT[i] += val;
}
int get(int p) {
int sum = 0;
for (int i = p; i; i -= i & -i)
sum += BIT[i];
return sum;
}
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
int v; cin >> v;
update(i, v);
update(i + 1, - v);
}
while (q--) {
int k;
cin >> k;
if (k == 1) {
int l, r, v;
cin >> l >> r >> v;
update(l, v);
update(r + 1, -v);
}
else {
int i;
cin >> i;
cout << get(i) << "\n";
}
}
}
Bài tập
- http://vn.spoj.com/problems/NKINV/
- http://vn.spoj.com/problems/CRATE/
- http://www.spoj.com/problems/RATING/
- http://vn.spoj.com/problems/KINV/
- http://vn.spoj.com/problems/C11SEQ/
- http://vn.spoj.com/problems/KMEDIAN/
- http://vn.spoj.com/problems/NKLUCK/
- http://vn.spoj.com/problems/FOCUS/
- http://vn.spoj.com/problems/NKMAXSEQ/
- http://vn.spoj.com/problems/NKREZ/
- http://vn.spoj.com/problems/MEDIAN/
- http://vn.spoj.com/problems/PVOI14_4/
- http://www.spoj.com/problems/MATSUM/
- http://www.spoj.com/problems/CCOST/
- http://vn.spoj.com/problems/KQUERY/
- http://vn.spoj.com/problems/DQUERY/
- http://vn.spoj.com/problems/SWAPB/
- http://vn.spoj.com/problems/SKWLTH/
- http://vn.spoj.com/problems/PLACE/
- http://vn.spoj.com/problems/MCHAOS/
- http://www.spoj.com/problems/INCSEQ/
- http://www.spoj.com/problems/INVCNT/
- http://www.spoj.com/problems/NICEDAY/
Bài tập
Bài tập | Điểm | Tỷ lệ AC | Người nộp | |
---|---|---|---|---|
Query-Sum | 1600p | 44,3% | 1256 | |
Query-Sum 2 | 1600p | 27,5% | 696 | |
Candies | 400p | 24,6% | 334 | |
Bài toán truy vấn tổng | 400 | 52,7% | 341 |
Bình luận