문제 링크
- http://icpc.me/14636
문제 출처
- 2017 ACM-ICPC World Finals D번
사용 알고리즘
- DnC Opt
시간복잡도
- $O(\min(N, M) \log \max(N, M))$
풀이
이런 식으로 빨간색 점 m개와 파란색 점 n개가 주어졌을 때
- 각 변이 좌표축과 평행하고
- 왼쪽 아래 점의 색깔이 빨간색이며
- 오른쪽 위 점의 색깔이 파란색인
직사각형의 최대 넓이를 구하는 문제입니다.
먼저, 절대 답이 될 수 없는 점들을 제거해줍시다.
임의의 빨간색 점 R보다 왼쪽 아래에 빨간색 점이 존재한다면 R은 절대 답이 될 수 없습니다.
마찬가지고 임의의 파란색 점 B보다 오른쪽 위에 파란색 점이 존재한다면 B는 절대 답이 될 수 없습니다. 이러한 점들을 제거합시다.
위 그림처럼 파란색은 x좌표 오름차순으로, 빨간색은 내림차순으로 번호를 붙여봅시다.
i번 파란점을 사용하면서 넓이가 최대가 되는 빨간점의 번호를 opt[i]라고 하면, opt[i] ≤ opt[i+1]이라는 사실을 관찰할 수 있습니다.
Divide and Conquer Optimization을 이용해 $O(\min(N, M) \log \max(N, M))$에 해결할 수 있습니다.
전체 코드
1 |
|