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

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

격자 덮기

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

요약
왼쪽 위 칸에서 오른쪽 아래 칸까지 모서리로 이어지는 직사각형들을 배치해 덮인 칸 숫자의 합을 최대로 합니다.
난이도

보통10점 중 7점

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

문제

명우는 각 칸에 정수가 하나씩 적힌 RR행 CC열 격자를 가지고 있다. 크기가 제각각인 직사각형 판도 여러 장 있어서, 다음 규칙에 따라 격자를 판으로 덮으려고 한다.

  • 판은 격자와 평행하게, 격자 안에 놓는다. 한 칸의 일부만 덮는 것은 허용되지 않는다.
  • 첫 번째 판은 1행 1열 칸을 반드시 포함한다.
  • 두 번째 판부터는 바로 앞에 놓은 판의 오른쪽 아래 꼭짓점에 닿게 놓아야 하고, 두 판의 변이 서로 닿아서는 안 된다. 즉 앞의 판이 rr행 cc열 칸에서 끝났다면 다음 판은 r+1r+1행 c+1c+1열 칸에서 시작한다.
  • 마지막 판은 RR행 CC열 칸을 반드시 포함한다.

아래 그림은 8행 8열 격자를 규칙대로 덮은 예이다.

8행 8열 격자를 규칙대로 덮은 예

점수는 판에 덮인 칸에 적힌 정수를 모두 더한 값이다. 어떤 판에도 덮이지 않은 칸은 점수에 들어가지 않는다. 격자가 주어질 때 명우가 얻을 수 있는 가장 큰 점수를 구하여라.

입력

첫 줄에 두 자연수 RR, CC가 주어진다.

다음 RR개의 줄에는 각 행의 값이 CC개씩 공백으로 구분되어 주어진다. 각 값의 절댓값은 10410^4 이하이다.

1≤R,C≤3001 \le R, C \le 300이다.

출력

규칙대로 덮어서 얻을 수 있는 가장 큰 점수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    2 2
    1 -1
    -1 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5 5
    4 -2 3 -4 2
    -2 1 1 4 -2
    -3 1 -1 2 5
    2 -4 2 3 5
    1 -4 4 -1 -2
    
    예상 출력
    22