리바운드 지점 확률과 상대 및 후보 선수 위치가 주어질 때, n개의 후보 중 5개를 골라 속공 득점 기댓값을 최대로 만드는 문제.
보통6완전 탐색조합론기하시뮬레이션아직 제출이 없습니다시간 제한2초메모리 제한512 MB농구 코트는 (0.0,0.0)과 (94.0,50.0)을 마주 보는 꼭짓점으로 하는 직사각형이고, 길이 단위는 피트다. 우리 팀은 (0.0,25.0)에 있는 골대를 지키고 (94.0,25.0)에 있는 골대를 공격한다.
슛이 빗나가면 공은 림을 맞고 코트 어딘가에 떨어진다. 공이 떨어질 수 있는 지점 m개와 각 지점으로 공이 갈 확률을 미리 알고 있다. 상대 팀 선수 5명의 위치는 고정되어 있고, 우리 팀은 후보 위치 n개 중에서 5개를 골라 선수를 한 명씩 세운다.
공이 어떤 지점에 떨어지면 코트 위 10명 가운데 그 지점에서 가장 가까운 선수가 공을 잡는다. 그 선수는 지점까지 직선으로 달려가 공을 잡은 뒤, 자기 팀이 공격하는 골대까지 다시 직선으로 달린다. 같은 순간에 반대 팀 선수 5명은 각자 자기 팀이 지키는 골대까지 직선으로 달린다. 모든 선수의 속도는 초당 20피트로 같다.
공을 잡은 선수가 골대에 도착하는 시각이 가장 빠른 수비수보다 t초 이르다고 하자. 수비수가 먼저 도착하면 t는 음수다. 득점 확률은 t≥0이면 1−2−(t+1)이고, t<0이면 2t−1이다. 성공한 슛은 2점으로 계산한다.
우리 팀의 득점은 +2점, 상대 팀의 득점은 −2점으로 본다. 기대 득점이 가장 커지도록 후보 위치 5개를 고르고, 그때의 기대 득점을 출력하라.
첫 줄에 데이터 집합의 개수 K가 주어진다. 1≤K≤20이다. 이어서 데이터 집합 K개가 차례로 주어진다.
각 데이터 집합의 첫 줄에는 정수 n과 m이 주어진다. n은 우리 팀 선수를 세울 수 있는 후보 위치의 개수로 5≤n≤15이고, m은 공이 떨어질 수 있는 지점의 개수로 1≤m≤100이다.
다음 줄에는 실수 10개 x1−,y1−,…,x5−,y5−가 주어진다. 상대 팀 선수 5명의 위치다. 그다음 줄에는 실수 2n개 xj+,yj+가 주어지며, 우리 팀의 후보 위치다. 마지막 줄에는 실수 3m개가 (xk∘,yk∘,pk) 형태의 삼중쌍 m개로 주어진다. 삼중쌍의 앞 두 값은 k번째 지점의 좌표이고, pk는 공이 그곳으로 갈 확률이다.
모든 x 좌표는 0 이상 94 이하, 모든 y 좌표는 0 이상 50 이하다. pk는 0 이상 1 이하이고 ∑kpk=1이다. 어떤 지점을 잡아도, 상대 팀 위치 5개와 후보 위치 n개 중 그 지점까지의 거리 차가 0.001 미만인 두 위치는 없다. 따라서 공을 잡는 선수는 언제나 하나로 정해진다.
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. x는 1부터 세는 데이터 집합 번호다. 다음 줄에 선수 5명을 가장 잘 배치했을 때의 기대 득점을 소수점 아래 둘째 자리까지 반올림해 출력한다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.
반올림한 값이 0이면 -0.00이 아니라 0.00을 출력한다. 정확한 답은 소수점 아래 둘째 자리 반올림 경계에서 10−6보다 멀리 떨어져 있다.