11. Closest Pair현재까지 최소 길이 h,현재까지 처리한 점의 개수 N-1X좌표 기준으로 점들을 정렬왼쪽에서부터 차례대로 처리점을 처리할 때 Set에 넣고다음 점으로 넘어갈 때나h가 감소할 때 Set에서 제거
12. Closest PairN번째 점과의 거리가h보다 가까운 점을 찾으려면현재 Set에 들어있으면서 N과의 x좌표, y좌표 차이가 각각 h 이하인 점들만 비교 대상Set의 원소들은 Y좌표로 정렬-> 정렬 시 Balanced Binary Tree 사용-> 탐색 Complexity O(log n)-> 전체 Complexity O(n log n)
13. Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분 1) X축에 평행한 직선의 양 끝 2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
14. Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분 1) X축에 평행한 직선의 양 끝 2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
15. 좀더 복잡한 경우…직선의 양 끝점과 Set 내 직선들의 교점까지 저장Priority Queue를 사용한 데이터 관리
16. Union of Rectangles사각형 안쪽의 넓이의 합 구하기X좌표를 기준으로 이벤트 구분 : 각사각형의 왼쪽, 오른쪽 모서리처음 왼쪽 모서리를 만났을 때 Set에 사각형 추가, 빠져나올 때 Set에서 제거넓이 = Σ(어떤 이벤트의 X좌표-이전 이벤트의 X좌표)*(cut length)
17. Cut Length 구하기각 X Event에 대하여 Nested 루프 처리Y좌표를 기준으로 한 수평 Line Sweep이벤트 – Set에 포함된 사각형의위쪽 모서리와 아래쪽 모서리한 방향으로 이동하면서해당 범위에 사각형이 1개 이상 겹쳐있을 경우 Y좌표의 차이만큼 Cut Length에 추가
18. Convex Hull문제: 주어진 모든 점을 포함하는 최소 크기의 볼록다각형 구하기방법: Andrew ScanUpper Hull과 Lower Hull로나누어 처리하고 마지막에 합체X좌표 기준으로 왼쪽에서부터 처리둘 이상의 X좌표가 같을 경우 Y 좌표가 큰 쪽을 선택(Upper Hull의 경우)
19. Convex Hull문제: 주어진 모든 점을 포함하는 최소 크기의 볼록다각형 구하기세 점 단위로 처리Convex가 아닌 삼각형이 생성될 경우Convex가 될 때까지 두 번째 점을 제거Nested Loop가 있어 O(n^2)일것 같지만각 점은 최대 한 번씩만 지워지므로 O(n)의 Complexity를 가짐
20. Sample Problem문제: 사각형 안쪽 넓이의 합 구하기 (SRM237/1/1)String 배열로 사각형들이 주어짐형식: { [Left], [Bottom], [Right], [Top] }Class: BoxUnionMethod: area Parameters: String[]Returns: intMethod signature: intarea(String[] rectangles)