아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

칙칙폭폭

시간 제한1초메모리 제한256 MB

요약
번호 순서대로 운행하는 열차가 정원 안에서 승객을 골라 태워 총 운임 수입을 최대로 만드는 방법을 구합니다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 동적 계획법
정답자
아직 제출이 없습니다

문제

도시 1에서 출발해 도시 NN까지 가는 기차가 있다. 이 기차는 도시 번호가 커지는 순서대로 도시 1, 도시 2, 도시 3, ..., 도시 NN을 차례로 지난다. 기차에는 한 번에 최대 PP명이 탈 수 있다.

도시 ii에서 도시 jj로 가려는 사람은 모두 Ai,jA_{i,j}명이고, 이 구간의 1인당 요금은 Ci,jC_{i,j}원이다. 승객은 자기가 출발하는 도시에서만 타고, 자기가 내리려는 도시에서만 내린다. 기차는 기다리는 사람 중에서 태울 사람을 자유롭게 고를 수 있고, 한 사람을 일부만 태울 수는 없다.

기차가 올릴 수 있는 최대 수익을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 수 NN과 기차의 정원 PP가 주어진다. (1≤N≤501 \le N \le 50, 1≤P≤1001 \le P \le 100)

다음 N−1N-1개의 줄에는 사람 수가 주어진다. ii번째 줄의 jj번째 수는 도시 ii에서 도시 i+ji+j로 가려는 사람의 수 Ai,i+jA_{i,i+j}이고, ii번째 줄에는 수가 N−iN-i개 있다. (0≤Ai,j≤1000 \le A_{i,j} \le 100)

그다음 N−1N-1개의 줄에는 요금이 주어진다. ii번째 줄의 jj번째 수는 도시 ii에서 도시 i+ji+j로 가는 1인당 요금 Ci,i+jC_{i,i+j}이고, ii번째 줄에는 수가 N−iN-i개 있다. (1≤Ci,j≤1001 \le C_{i,j} \le 100)

NN이 1이면 두 표 모두 비어 있고, 입력은 첫째 줄로 끝난다.

출력

첫째 줄에 기차가 올릴 수 있는 최대 수익을 출력한다.

힌트

첫 번째 예제에서 기차는 다음과 같이 움직일 때 수익이 가장 크다.

도시 1에서 1번 도시에서 2번 도시로 가는 사람 2명, 1번에서 3번으로 가는 사람 2명, 1번에서 4번으로 가는 사람 1명을 태운다. 여기까지 수익은 5×2+3×2+4×1=205 \times 2 + 3 \times 2 + 4 \times 1 = 20이다.

도시 2에서 1번에서 2번으로 가는 사람 2명을 내려주고, 2번에서 3번으로 가는 사람 4명을 태운다. 수익은 20+6×4=4420 + 6 \times 4 = 44가 된다.

도시 3에서 1번에서 3번으로 가는 사람 2명과 2번에서 3번으로 가는 사람 4명을 내려준 뒤, 3번에서 4번으로 가는 사람 6명을 태운다. 수익은 44+1×6=5044 + 1 \times 6 = 50이 된다.

도시 4에 도착하면 남은 사람을 모두 내려준다. 최종 수익은 50이다.

예제6

  1. 예제 1

    입력
    4 7
    2 5 3
    4 5
    6
    5 3 4
    6 4
    1
    
    예상 출력
    50
    
  2. 예제 2

    입력
    1 1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    2 3
    5
    10
    
    예상 출력
    30
    
  4. 예제 4

    입력
    3 1
    1 1
    1
    1 5
    1
    
    예상 출력
    5
    
  5. 예제 5

    입력
    3 1
    1 1
    1
    5 3
    5
    
    예상 출력
    10
    
  6. 예제 6

    입력
    3 5
    0 0
    0
    7 9
    4
    
    예상 출력
    0