문제
풀이
기본적인 아이디어는 직사각형의 시작점을 기준으로 왼쪽에서 오른쪽으로 스위핑하면서 최대 증가 직사각형 집합을 구한 뒤 끝점을 기준으로 업데이트 해 주는 것입니다.
세그먼트 트리에 끝점을 기준으로 업데이트 되어있으므로 현재 직사각형의 시작점의 $y$보다 작은 범위에서 최댓값을 찾아 $1$을 더하면 현재 직사각형까지의 최대 증가 직사각형 집합의 크기가 됩니다.
그러나 다음 직사각형의 시작점의 $x$ 좌표가 현재 직사각형의 끝점보다 작을 수 있으므로 우선순위 큐를 이용해 지연된 갱신을 하면 됩니다.
시간 복잡도 $\mathcal{O}(N\log N)$ 정도에 해결할 수 있습니다.
코드
1 |
|