일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 회고록
- tensorflow
- 세그먼트 트리
- 조합론
- 이분 탐색
- Overfitting
- 분할 정복
- 문자열
- DP
- object detection
- dropout
- 가끔은 말로
- lazy propagation
- dfs
- 2023
- 플로이드 와샬
- 자바스크립트
- NEXT
- 알고리즘
- BFS
- 너비 우선 탐색
- 크루스칼
- back propagation
- pytorch
- c++
- 미래는_현재와_과거로
- 다익스트라
- 우선 순위 큐
- 백트래킹
- 가끔은_말로
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 |