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