만드는 중입니다

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

최적 이차 함수

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

요약
N개의 점 (x_i, y_i)가 주어질 때, 모든 점에서 최대 제곱 오차를 가장 작게 만드는 이차함수 ax^2+bx+c를 찾고 그 최소 오차 값을 출력합니다.
난이도

어려움10점 중 8점

유형
수학, 이분 탐색, 기하
정답자
아직 제출이 없습니다

문제

변수 xx와 yy는 y=f(x)y=f(x) 관계에 있고, ff는 이차 함수 f(x)=ax2+bx+cf(x) = a x^2 + b x + c이다. 여기서 aa, bb, cc는 실수이다. 함수 ff는 알려져 있지 않으며, 그 최선의 추정값을 구하려고 한다.

이를 위해 실험으로 xx값 x1,x2,…,xNx_1, x_2, \ldots, x_N에 대응하는 관측된 yy값 y1,y2,…,yNy_1, y_2, \ldots, y_N을 NN개 얻었다. 관측값에는 여러 원인에서 생긴 오차가 섞여 있어서, 모든 값이 어떤 이차 함수의 정확한 함숫값일 가능성은 낮다. 따라서 오차를 최소로 만드는 ff의 추정값을 찾아야 한다.

임의의 이차 함수 ff에 대해, 데이터 쌍 (xi,yi)(x_i, y_i)의 오차는 (yi−f(xi))2(y_i-f(x_i))^2이다. ff의 오차는 NN개 데이터 쌍 전체의 오차 중 최댓값이다. 관측된 NN개의 데이터 쌍이 주어지면, 오차를 최소로 만드는 ff의 추정값을 구하고 그 최소 오차 값을 출력하는 프로그램을 작성하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다 (1≤T≤1000001 \le T \le 100000). 테스트 케이스가 그 뒤를 잇는다.

각 테스트 케이스의 첫 줄에는 관측 데이터 쌍의 개수 NN이 주어진다 (1≤N≤1000001 \le N \le 100000).

이어지는 NN개의 줄에는 ii번째 데이터 쌍을 나타내는 두 정수 xix_i와 yiy_i가 주어진다 (−106≤xi,yi≤106-10^6 \le x_i, y_i \le 10^6).

모든 테스트 케이스의 NN을 합한 값은 200000을 넘지 않는다.

출력

각 테스트 케이스마다 가능한 최소 오차 값을 실수 한 줄로 출력한다.

절대 오차 또는 상대 오차가 10−610^{-6} 이내이면 정답으로 인정한다.

예제1

  1. 예제 1

    입력
    1
    4
    0 0
    1 3
    2 9
    3 0
    
    예상 출력
    5.062500000000