만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

데이터 분석

면접 대비

시간 제한3초메모리 제한1024 MB

요약
점 N개를 x좌표 순으로 정렬한 뒤 K개의 연속된 구간으로 나눕니다. 각 구간의 y값을 하나의 수평선으로 맞출 때 절댓값 오차 합의 최솟값을 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 정렬, 힙
정답자
아직 제출이 없습니다

문제

데이터 과학자 앨리스는 데이터를 분석하는 일을 맡았다. 각 데이터는 2차원 좌표 (x,y)(x, y)로 구성된다.

데이터 분석은 2차원 평면에서 xx축에 평행한 선분 KK개를 찾는 과정이다. 구체적으로 다음 값들을 결정해야 한다.

  • 각 선분의 끝을 나타내는 xx좌표 0=p0<p1<⋯<pK=50 0000=p_0 < p_1 < \cdots < p_K = 50\ 000. ii번째 선분의 양 끝은 pi−1p_{i-1}과 pip_i이다. 단, 1≤i≤K1 \leq i \leq K
  • 각 선분의 yy좌표 m1,m2,⋯ ,mKm_1, m_2, \cdots, m_K

m1,m2,⋯ ,mKm_1, m_2, \cdots, m_K의 값을 아무렇게나 정하면 안 된다. 분석의 정확도를 높이기 위해 오차를 정의하고, 오차가 최소가 되도록 값을 정해 줄 것이다. 오차는 다음과 같이 정의한다.

  • 데이터 (x,y)(x, y)의 오차는, pi−1≤x<pip_{i-1} \leq x < p_i를 만족하는 ii에 대해 ∣y−mi∣|y - m_i|이다.
  • 전체 데이터의 오차는 각 데이터 오차의 합이다.

앨리스는 오차가 최소가 되도록 p0,⋯ ,pKp_0, \cdots, p_K와 m1,⋯ ,mKm_1, \cdots, m_K를 정하고자 한다. 각 값을 적절히 정했을 때, 데이터 분석 오차의 최솟값을 구하시오.

입력

첫 번째 줄에 데이터의 개수 NN과 찾아야 하는 선분의 개수 KK가 공백으로 구분되어 주어진다.

이후 NN개의 줄에 각 데이터 (x,y)(x, y)가 공백으로 구분되어 주어진다. 모든 데이터의 xx 값은 서로 다르다.

출력

p0,⋯ ,pKp_0, \cdots, p_K와 m1,⋯ ,mKm_1, \cdots, m_K의 값을 적절히 정했을 때, 데이터 분석의 오차를 출력한다. 절대 오차와 상대 오차는 10−410^{-4}까지 허용한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤3 0001\leq N \leq 3\,000
  • 1≤K≤min⁡(N,10)1\leq K \leq \min(N, 10)
  • 0≤x<50 0000\leq x < 50\,000
  • 0≤y≤1 0000\leq y \leq 1\,000

예제1

  1. 예제 1

    입력
    6 2
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    
    예상 출력
    4.0000