철로 놓기

x좌표 순으로 정렬된 n개 도시를 수직이 아닌 직선들로 덮으면서, 각 도시에서 직선까지의 수직거리 제곱합과 직선 개수 곱하기 C의 합을 최소로 만든다.

어려움8동적 계획법기하수학그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

영구국은 여러 도시를 잇는 철로를 놓으려고 한다. 노선은 각 도시와 철로 사이의 거리가 가장 작아지도록 정하기로 했다. 자재를 알아보던 기술진은 이웃 나라 포에버국에서 만든 기성품 선로를 사 오는 편이 가장 낫다는 것을 알아냈다. 그런데 포에버국이 파는 기성품 선로는 직선뿐이다. 노선이 하나의 직선이 아니면 (아래 그림처럼) 기성품 선로를 여러 개 사야 한다. 길이가 서로 다른 선로를 사도 된다.

여러 직선 구간으로 이루어진 노선

포에버국에서 선로를 하나 들여올 때마다 간접비 CC가 붙는다. 그래서 a+bCa + bC가 최소가 되도록 노선을 설계해야 한다.

  • aa는 각 도시에서 철로로 내린 수직 선분의 길이를 제곱해서 모두 더한 값이다.
  • bb는 기성품 선로의 개수이다.

다음 조건도 함께 지켜야 한다.

  • 선로가 서로 이어져 있지 않아도 된다.
  • 어떤 선로도 수직으로 놓을 수 없다.
  • 어떤 수직선도 두 선로의 내부를 서로 다른 두 점에서 만나지 않는다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 정수 nn과 실수 CC가 공백 하나로 구분되어 주어진다. 이어지는 nn개 줄에 도시의 좌표가 주어지며, ii번째 줄에는 ii번째 도시의 좌표 xix_iyiy_i가 정수로 주어진다.

제한

  • 1T2001 \le T \le 200
  • 1n10001 \le n \le 1000
  • 1000xi,yi1000-1000 \le x_i, y_i \le 1000
  • 0<C10000.0000 < C \le 10000.000
  • CC는 소수점 아래 셋째 자리까지 주어진다.
  • x1<x2<x3<<xnx_1 < x_2 < x_3 < \cdots < x_n

출력

각 테스트 케이스마다 a+bCa + bC의 최솟값을 한 줄에 하나씩 출력한다. 소수점 아래 다섯째 자리에서 반올림해서 넷째 자리까지 출력하고, 뒤에 오는 0도 생략하지 않는다. 값이 11이면 1.0000으로 출력한다.