일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- DP
- 가끔은_말로
- BFS
- 문자열
- 자바스크립트
- tensorflow
- 미래는_현재와_과거로
- 가끔은 말로
- 백트래킹
- 세그먼트 트리
- c++
- 알고리즘
- back propagation
- object detection
- dfs
- 다익스트라
- 회고록
- lazy propagation
- 분할 정복
- Overfitting
- 너비 우선 탐색
- NEXT
- 플로이드 와샬
- pytorch
- 이분 탐색
- 조합론
- 크루스칼
- 2023
- 우선 순위 큐
- dropout
Archives
- Today
- Total
Doby's Lab
[자료구조] 백준 12837번: 가계부 (Hard) (C++) 본문
https://www.acmicpc.net/problem/12837
12837번: 가계부 (Hard)
살아있는 화석이라고 불리는 월곡이는 돈에 찌들려 살아가고 있다. 그에게 있어 수입과 지출을 관리하는 것은 굉장히 중요한 문제이다. 스마트폰에 가계부 어플리케이션을 설치해서 사용하려
www.acmicpc.net
처음에 문제의 뜻을 몰라서 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 |