아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

플롯

면접 대비

시간 제한30초메모리 제한128 MB

요약
n개의 점을 최대 m개의 연속한 구간으로 나누고 각 구간을 한 점으로 대체할 때, 원래 점에서 대표점까지 거리의 최댓값을 최소로 만드는 값을 구한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 동적 계획법, 기하, 분할 정복
정답자
아직 제출이 없습니다

문제

평면 위의 점들의 수열을 플롯(plot) 이라고 부른다. 주어진 플롯 (P1,…,Pn)(P_1, \dots, P_n) 을, 원래 플롯과 가장 비슷하면서도 점의 개수가 최대 mm 개 (m≤nm \le n) 이하인 다른 플롯으로 바꾸려고 한다.

새 플롯은 다음과 같이 만든다. 수열 (P1,…,Pn)(P_1, \dots, P_n) 을 ss 개 (s≤ms \le m) 의 연속한 부분수열로 나눈다.

(Pk0+1,…,Pk1), (Pk1+1,…,Pk2), …, (Pks−1+1,…,Pks)(P_{k_0+1}, \dots, P_{k_1}),\ (P_{k_1+1}, \dots, P_{k_2}),\ \dots,\ (P_{k_{s-1}+1}, \dots, P_{k_s})

여기서 0=k0<k1<k2<⋯<ks=n0 = k_0 < k_1 < k_2 < \dots < k_s = n 이다. 그런 다음 각 부분수열 (Pki−1+1,…,Pki)(P_{k_{i-1}+1}, \dots, P_{k_i}) (i=1,…,si = 1, \dots, s) 을 하나의 새로운 점 QiQ_i 로 대체한다. 이때 점 Pki−1+1,…,PkiP_{k_{i-1}+1}, \dots, P_{k_i} 각각이 점 QiQ_i 로 축약(contract) 되었다고 말한다. 그 결과 점 Q1,…,QsQ_1, \dots, Q_s 로 이루어진 새 플롯이 만들어진다.

새로 만든 플롯이 원래 플롯과 얼마나 닮았는지는, 모든 점 P1,…,PnP_1, \dots, P_n 에서 자신이 축약된 점까지의 거리 중 최댓값으로 측정한다.

max⁡i=1,…,s(max⁡j=ki−1+1,…,kid(Pj,Qi))\max_{i=1,\dots,s} \left( \max_{j=k_{i-1}+1,\dots,k_i} d(P_j, Q_i) \right)

여기서 d(Pj,Qi)d(P_j, Q_i) 는 두 점 사이의 거리이며, 다음 공식으로 주어진다.

d((x1,y1),(x2,y2))=(x2−x1)2+(y2−y1)2d((x_1, y_1), (x_2, y_2)) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}

플롯 예시

위 그림은 예시 플롯 (P1,…,P7)(P_1, \dots, P_7) 과 새 플롯 (Q1,Q2)(Q_1, Q_2) 를 나타낸다. 여기서 (P1,…,P4)(P_1, \dots, P_4) 는 Q1Q_1 로, (P5,P6,P7)(P_5, P_6, P_7) 은 Q2Q_2 로 축약되었다.

nn 개의 점으로 이루어진 플롯이 주어질 때, 점의 개수가 최대 mm 개 이하이면서 원래 플롯과의 닮음 척도(위에서 정의한 최대 축약 거리)가 최소가 되도록 플롯을 만들 수 있다. 연속한 부분수열로 나누는 방법은 자유롭게 정할 수 있다. 이때 가능한 최소 닮음 척도 dd 를 구하여라.

입력

첫째 줄에 두 정수 nn 과 mm 이 공백 하나로 구분되어 주어진다 (1≤m≤n≤1000001 \le m \le n \le 100000). 이어지는 nn 개의 줄 중 ii 번째 줄에는 두 정수 xix_i 와 yiy_i 가 공백 하나로 구분되어 주어지며 (−1000000≤xi,yi≤1000000-1000000 \le x_i, y_i \le 1000000), 이는 점 PiP_i 의 좌표 (xi,yi)(x_i, y_i) 를 나타낸다.

출력

첫째 줄에 실수 하나 dd 를 출력한다. dd 는 점의 개수가 mm 개 이하가 되도록 만들 수 있는 모든 플롯에 대하여, 원래 플롯과의 닮음 척도(각 점에서 자신이 축약된 점까지 거리의 최댓값)의 최솟값이다. 소수점 아래 정확히 66 자리까지 반올림하여 출력한다.

예제4

  1. 예제 1

    입력
    7 2
    2 0
    0 4
    4 4
    4 2
    8 2
    11 3
    14 2
    
    예상 출력
    3.000000
    
  2. 예제 2

    입력
    2 1
    0 0
    0 6
    
    예상 출력
    3.000000
    
  3. 예제 3

    입력
    4 2
    0 0
    0 8
    100 0
    100 8
    
    예상 출력
    4.000000
    
  4. 예제 4

    입력
    5 2
    0 0
    1 0
    2 0
    3 0
    4 0
    
    예상 출력
    1.000000