Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 하이터치☆메모리
- 소마
- paper
- barin tumor
- 2494
- Fitmong
- TripGuard
- 2085
- 1인개발
- God of Mine
- 외국어이름
- 34031
- BOJ
- 7626
- 숫자 맞추기
- 소프트웨어마에스트로
- k개 사과 트리 노드만으로 배를 최대로 수확하기
- 알고리즘
- 25977
- 홀수 홀릭 호석
- Australian Voting
- Classification
- 개발
- 25195
- 24501
- 백준
- blobaww
- AI
- TaskQ
- MemoSprint
Archives
- Today
- Total
iwanabethedev 님의 블로그
[boj 7626] 직사각형 본문
좌표 압축을 하고 스위핑을 하면서 세그먼트 트리를 훝어가며 푸는 문제.
아이디어는 나왔는데, 구체화 하는 과정에서 한참을 걸려서, 아래 풀이를 참고해서 풀었다.
역시 세상에는 대단한 분들이 많다.
내가 오답을 냈던 부분은, 세그먼트 트리의 요소가 영역을 관리했어야 했는데, 점을 관리했던것...
더보기
import sys
from collections import deque
input = sys.stdin.readline
def U(s, e, l, r, tree_idx, tree, count, val, ys):
if s > r or e < l: return
if s >= l and e <= r:
count[tree_idx] += val
else:
mid = (s+e)>>1
U(s, mid, l, r, tree_idx<<1, tree, count, val, ys)
U(mid+1, e, l, r, tree_idx<<1|1, tree, count, val, ys)
if count[tree_idx]:
tree[tree_idx] = ys[e] - ys[s-1]
else:
if s == e: tree[tree_idx] = 0
else: tree[tree_idx] = tree[tree_idx<<1] + tree[tree_idx<<1|1]
def solve():
coordinates = []
N = int(input())
for _ in range(N):
coordinates.append(tuple(map(int, input().split())))
xs = list()
ys = set()
for x1, x2, y1, y2 in coordinates:
xs.append((x1, y1, y2, 1))
xs.append((x2, y1, y2, -1))
ys.add(y1)
ys.add(y2)
xs.sort()
ys = list(ys)
ys.sort()
cnt_to_y = {}
y_to_cnt = {}
cnt = 0
for y in ys:
cnt += 1
cnt_to_y[cnt] = y
y_to_cnt[y] = cnt
tree = [0] * (4 * cnt + 1)
count = [0] * (4 * cnt + 1)
ans = 0
prev, y1, y2, _ = xs[0]
U(1, cnt-1, y_to_cnt[y1], y_to_cnt[y2]-1, 1, tree, count, 1, ys)
for idx in range(1, len(xs)):
x, y1, y2, flag = xs[idx]
ans += (x - prev) * tree[1]
prev = x
U(1, cnt-1, y_to_cnt[y1], y_to_cnt[y2]-1, 1, tree, count, flag, ys)
print(ans)
return
def main():
solve()
return
if __name__ == "__main__":
main()

'알고리즘' 카테고리의 다른 글
| [boj 4419] Austrailam Voting (0) | 2026.03.29 |
|---|---|
| [boj 25195] Yes or yes (0) | 2026.03.28 |
| [20164] 홀수 홀릭 호석 (0) | 2026.03.26 |
| [boj 25977] k개 사과 트리 노드만으로 배를 최대로 수확하기 (0) | 2026.03.25 |
| [boj 34031] 하이터치☆메모리 (0) | 2026.03.24 |
