만드는 중입니다

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

이것은 전쟁이다

시간 제한2초메모리 제한512 MB

요약
정렬된 병사들을 연속된 그룹으로 나눕니다. 각 그룹의 왼쪽 병사 a와 오른쪽 병사 b에 대해 f_a(x_b)의 합이 최대가 되는 값을 구합니다.
난이도

어려움10점 중 8점

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

문제

군대가 전쟁에 나가려 한다. 지휘관은 군인들을 여러 그룹으로 나누어 전체 전투력의 합이 최대가 되게 하려 한다. NN명의 군인을 x축 위의 점으로 본다. 모든 군인은 서로 다른 위치에 서 있고, ii번째 군인은 xix_i에 서 있다. 군인은 1번부터 NN번까지 번호가 붙어 있으며, x 값 순서대로 왼쪽에서 오른쪽으로 정렬되어 주어진다.

군인들을 하나 이상의 그룹으로 나눈다. 각 군인은 정확히 한 그룹에 속하며, 모든 그룹은 연속된 구간이어야 한다. a≤ba \le b인 구간 [a,b][a, b]가 하나의 그룹이면, 이 그룹은 aa번째부터 bb번째 군인까지(양 끝 포함) 모두 포함하고, 다른 그룹의 군인이 그 사이에 끼지 않는다.

각 군인 ii에게는 함수 fif_i가 주어진다. 이 함수는 군인 ii가 자기 그룹에서 가장 왼쪽에 있을 때만 쓴다. aa번째부터 bb번째까지 그룹의 전투력은 fa(xb)f_a(x_b)이다. 즉 그룹에서 가장 오른쪽 군인의 x 값을 가장 왼쪽 군인의 함수에 넣은 값이다.

정렬된 서로 다른 MM개의 값 z1,z2,…,zMz_1, z_2, \dots, z_M과, 각 함수에 대해 fi(zj)f_i(z_j) 값이 주어진다. 이 MM개 값이 아닌 zz에 대해서는 연속한 점 (zj,fi(zj))(z_j, f_i(z_j))를 직선 선분으로 잇는다. 그러면 각 fif_i는 z1z_1부터 zMz_M까지 정의된다.

군대의 전투력은 모든 그룹 전투력의 합이다. 이 합이 최대가 되도록 그룹을 나누고 그 값을 구한다.

입력

첫 줄에 테스트 케이스 수 TT(1≤T≤1001 \le T \le 100)가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에 두 정수 NN과 MM(1≤N≤1051 \le N \le 10^5, 2≤M2 \le M, N×M≤105N \times M \le 10^5)이 주어진다. 다음 줄에 정렬된 정수 x1,x2,…,xNx_1, x_2, \dots, x_N(−106≤xi≤106-10^6 \le x_i \le 10^6)이 주어진다. 다음 줄에 정렬된 정수 z1,z2,…,zMz_1, z_2, \dots, z_M(−106≤zj≤106-10^6 \le z_j \le 10^6)이 주어진다. 다음 NN개 줄에는 각각 MM개의 정수가 주어진다. ii번째 줄의 jj번째 정수는 fi(zj)f_i(z_j)이다(−106≤fi(zj)≤106-10^6 \le f_i(z_j) \le 10^6).

z1≤x1z_1 \le x_1이고 xN≤zMx_N \le z_M이 보장된다.

출력

각 테스트 케이스마다 군대의 최대 전투력을 한 줄에 출력한다. 값은 소수점 아래 정확히 6자리로 반올림한다.

힌트

다음 그림은 첫 번째 테스트 케이스를 나타낸다.

x축 위의 채워진 원 3개는 3명의 군인 위치이다. 위에서 설명한 방식으로 그린 함수 f1f_1, f2f_2, f3f_3가 군인마다 하나씩 있다. 최선의 방법은 처음 두 군인을 한 그룹으로 묶고, 마지막 군인은 혼자 두는 것이다. 첫 그룹의 전투력은 f1(x2)f_1(x_2)이며, f1(2)=4f_1(2) = 4이다. 마지막 군인 그룹의 전투력은 f3(x3)=f3(3)=2.666667f_3(x_3) = f_3(3) = 2.666667이다. 따라서 전체 전투력은 6.666667이다(소수점 여섯째 자리까지 반올림한 값).

예제1

  1. 예제 1

    입력
    3
    3 4
    -5 2 3
    -6 1 4 5
    -1 3 6 0
    2 -2 -4 -6
    -4 0 4 5
    5 2
    -2 5 8 9 10
    -2 10
    -7 -6
    -3 -7
    0 -8
    9 -10
    5 -4
    2 2
    0 7
    -2 7
    -10 -2
    -4 -10
    
    예상 출력
    6.666667
    -6.000000
    -2.000000