도미노 게임

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

요약
음이 아닌 정수가 적힌 N×M 격자에서 인접한 두 칸을 골라 각각 1씩 줄이는(0 미만은 그대로) 행동을 반복할 때, 모든 칸이 0이 되기 전까지 할 수 있는 최대 차례 수를 구한다.
난이도

보통10점 중 7점

유형
그래프, 수학, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

N×MN\times M 크기의 격자가 주어진다. ii행 jj열의 칸에는 음이 아닌 정수 a_ija\_{ij}가 적혀 있다. (1≤i≤N1\le i\le N; 1≤j≤M1\le j\le M)

민지는 각 차례마다 아래와 같은 행동을 한다.

  1. 격자에서 상하좌우로 인접한 두 칸을 선택한다. 이때 두 칸에 적힌 수 중 적어도 하나는 양의 정수이어야 한다.
  2. 선택한 칸에 적힌 수에서 11씩 뺀다. 만약 어떤 칸에 적힌 수가 00이라면 그대로 둔다.

모든 칸에 적힌 수가 00이 될 때 게임이 종료된다. 민지는 이 게임을 최대한 오래 하려고 한다. 민지가 최선을 다해 게임을 오래 진행했을 때, 진행할 수 있는 최대 차례의 수를 구해보자.

입력

첫째 줄에 양의 정수 NN, MM이 공백으로 구분되어 주어진다. (2≤N,M≤1,0002 \le N, M \le 1\\,000)

이후 NN개의 줄에 걸쳐 격자에 적힌 수가 주어진다. 그 중 ii번째 줄에는 a_i1,a_i2,⋯ ,a_iMa\_{i1}, a\_{i2}, \cdots, a\_{iM}이 공백으로 구분되어 주어진다. (0≤a_ij≤1090 \le a\_{ij} \le 10^9)

출력

진행할 수 있는 최대 차례의 수를 출력한다.

예제2

  1. 예제 1

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

    입력
    2 2
    1 0
    1 1
    
    예상 출력
    3