티스토리 뷰
문제에 중요한 명제가 있다.
주어진 $N$개의 점들을 모두 덮는 최소 크기의 정사각형으로, $N$개의 점을 모두 덮을 수 있는 최소 두께의 정사각형 액자를 만들 수 있다.
문제 설명에 따르면 위 명제는 이미 증명된 사실이며, 이 조건 없이 문제를 해결하기는 매우 힘들다.
$w \leq w'$ 일 때, 두께 $w$가 모든 점을 덮으면 두께 $w'$도 모든 점을 덮을 수 있다. 따라서 답을 binary search로 구할 수 있다.
우선, 편의상 $max_x-min_x \leq max_y-min_y$ 라 하자.
그러면 액자의 바깥 정사각형의 한 변 길이 $S = max_y-min_y$ 임과 동시에 액자 위의 y좌표와 아래의 y좌표가 결정된다.
이제 두께 $w$가 답이 될 수 있는지 확인해야한다.
이 때, 여러가지 관점으로 접근할 수 있는데 문제를 풀며 가장 편하다고 느낀 것은 중심의 x좌표를 결정하는 방식이다.
우선 중심의 x좌표를 $X$라 하며 $X$가 될 수 있는 범위는 $[max_x-S/2,min_x+S/2]$이다.
$min_y+w < y_i < max_y-w$ 인 $i$에 대하여, $x_i$들을 정렬한 배열 $A$를 만든다.
액자의 작은 정사각형 한 변 길이는 $S-2w$이다.
두께가 $w$인 액자가 존재하기 위해서 $A_{i+1}-A_i \geq S-2w$ 인 $i$를 찾아야한다.
이 때, 가능한 $X$의 범위를 구해보면, $[A_i+\frac{S-2w}{2},A_{i+1}-\frac{S-2w}{2}]$ 이다.
처음에 구한 $X$의 범위와 $i$에 대한 $X$의 범위 중 공통 범위가 있으면, 두께 $w$는 답이 된다.
처음에 입력받은 좌표에 2를 곱해서 처리하면 double 연산을 할 필요가 없다.
만약 $max_x-min_x > max_y-min_y$ 인 경우 x좌표와 y좌표를 swap 해주면된다.
작은 데이터를 통해 답이 나오는지 확인해볼 수 있다.
'ICPC > 2012 대전' 카테고리의 다른 글
F. Pandora (0) | 2013.10.19 |
---|---|
K. Sports Reporters (4) | 2013.10.19 |
- Total
- Today
- Yesterday
- z-trening
- BOI
- Dynamic Pramming
- optimization
- moore
- idea
- ioi
- Knuth Optimization
- dynamic programming
- HackerRank
- Boyer-Moore Majority Vote Algorithm
- BOI 2001
- Parametric Search
- Segment tree
- vote
- Splay Tree
- IOI2013
- TRIE
- Divide & Conquer
- USACO
- Dijkstra
- Greedy Method
- IOI2012
- IOI2014
- IOI2011
- BOI 2009
- Algorithm
- majority
- Tree
- Boyer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |