티스토리 뷰
문제
문제 분류
- 난이도 - 중
- 태그 - 구간 트리
문제 풀이
각 점에 대해서 자신의 위치보다 \(x\) 값이 크거나 같으면서, \(y\)값은 작거나 같은 지점들을 모두 세면 되는 문제다. 그런데 \(n\)의 값을 보면 알겠지만, 단순하게 모두 다 해보는 \(O(N^2)\) 방식으로는 안된다. 구간 트리를 사용하면 이 정보를 빠르게 셀 수 있다.
먼저 좌표들을 (1) \(x\)값이 감소하는 방향으로, (2) \(y\) 값이 증가하는 방향으로 정렬한다.
그런 다음에 유일한 \(y\) 좌표들을 가지고 구간 트리를 구성한다. 이제 앞서 점들을 정렬한 순서대로 하나씩 자신보다 \(x\) 값이 크거나 같은 점들 중에서 \(y\) 값이 작거나 같은 좌표들을 구간 합 트리에 질의를 하여 찾아낸다. 그런 다음에 자신의 \(y\) 좌표에 해당하는 트리의 구간(위치)에 +1을 하면 된다.
소스 코드
'알고리즘 문제 풀이' 카테고리의 다른 글
777E Hanoi Factory (0) | 2017.03.02 |
---|---|
777D Cloud of Hashtags (0) | 2017.03.01 |
777C Alyona and Spreadsheet (0) | 2017.03.01 |
BOJ 1034 램프 (0) | 2017.02.28 |
BOJ 3117 YouTube (0) | 2017.02.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Data structure
- branch and bound
- Square root decomposition
- divide and conquer
- constructive algorithms
- suffix array
- parametric search
- Dynamic Programming
- Binary search
- Heap
- greedy
- sliding window
- Graph
- tree
- Minimum Spanning Tree
- karatsuba
- search
- sort
- implementation
- Fenwick Tree
- BFS
- Segment Tree
- math
- kmp search
- Strings
- pattern matching
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함