일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 가끔은 말로
- 우선 순위 큐
- 플로이드 와샬
- 분할 정복
- lazy propagation
- 자바스크립트
- 문자열
- 다익스트라
- 알고리즘
- 미래는_현재와_과거로
- 가끔은_말로
- tensorflow
- pytorch
- 세그먼트 트리
- NEXT
- 2023
- object detection
- 백트래킹
- 크루스칼
- BFS
- c++
- dfs
- 이분 탐색
- 조합론
- Overfitting
- dropout
- back propagation
- DP
- 회고록
- 너비 우선 탐색
Archives
- Today
- Total
Doby's Lab
[자료구조] 백준 12837번: 가계부 (Hard) (C++) 본문
https://www.acmicpc.net/problem/12837
처음에 문제의 뜻을 몰라서 TC보고 구간합 세그먼트 트리인 걸 알았다.
그리고 1번 쿼리에서는 b번 인덱스에 C를 더하라는 뜻이다.
이번 문제는 배열 선언이 필요 없다. 애초에 초기 값이 모두 0이기 때문에 따로 선언하지 않고, 바로 트리에다가 코드를 짰다.
초기 값이 0이다 보니 세그먼트 트리 전처리 함수도 필요가 없었다.
[AC 코드]
#include <iostream>
#define ll long long
#define MAX (1000000 + 1)
using namespace std;
ll sgTree[MAX * 4];
void update(int start, int end, int node, int index, ll value) {
if (index < start || end < index) return;
sgTree[node] += value;
if (start == end) return;
int mid = (start + end) >> 1;
update(start, mid, node * 2, index, value);
update(mid + 1, end, node * 2 + 1, index, value);
return;
}
ll query(int start, int end, int node, int left, int right) {
if (end < left || start > right) return 0;
if (left <= start && end <= right) {
return sgTree[node];
}
int mid = (start + end) >> 1;
return query(start, mid, node * 2, left, right) + query(mid + 1, end, node * 2 + 1, left, right);
}
int n, m;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int a, b; ll c;
cin >> a >> b >> c;
if (a == 1) {
update(1, n, 1, b, c);
}
else {
cout << query(1, n, 1, b, c) << '\n';
}
}
return 0;
}
728x90
'PS > BOJ' 카테고리의 다른 글
[자료구조] 백준 18436번: 수열과 쿼리 37 (C++) (0) | 2021.12.13 |
---|---|
[자료구조] 백준 6218번: Balanced Lineup (C++) (0) | 2021.12.13 |
[알고리즘] 백준 5941번: Meeting Place (C++) (0) | 2021.12.13 |
[알고리즘] 백준 3584번: 가장 가까운 공통 조상 (C++) (0) | 2021.12.13 |
[알고리즘] 백준 11437번: LCA (C++), 최소 공통 조상 (0) | 2021.12.13 |