착한 말 나쁜 말

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

요약
N×N 격자의 각 세균이 직교 이웃으로 한 칸 이동하는 데 a, 좋은 칸에서 체비쇼프 거리 D 이내로 뛰는 데 b의 에너지가 들 때, 각 회의 칸마다 모든 세균이 모이는 최소 총에너지를 구한다.
난이도

어려움10점 중 9점

유형
최단 경로, 그래프, BFS, 행렬
정답자
아직 제출이 없습니다

문제

N×NN \times N 격자의 각 칸에 양파가 하나씩 심어져 있다. 각각의 양파에는 세균이 한 마리씩 살고 있는데, 이 세균들은 자주 모임을 연다. 이 격자에서 좌표 (r,c)(r, c)는 rr번째 행의 cc번째 열에 있는 칸을 뜻한다. 각 세균에게는 두 가지 이동 방법이 있는데, 착한 말과 나쁜 말이다. 나쁜 말을 한 번 하면 aa의 에너지가 소모된다. 착한 말을 하려면 지금 세균이 있는 칸이 착한 칸이어야 하며, bb의 에너지가 소모된다. 현재 위치가 (r,c)(r, c)라고 할 때 나쁜 말을 하면 화난 양파가 세균을 옆의 양파로 밀어내서 ∣r′−r∣+∣c′−c∣=1|r' - r|+|c' - c| = 1을 만족하는 (r′,c′)(r', c')로 이동할 수 있으며, 착한 말을 하면 양파가 순간적으로 성장해서 세균을 높이 띄워주어 max⁡(∣r′−r∣,∣c′−c∣)≤D\max(|r' - r|, |c' - c|) \le D를 만족하는 (r′,c′)(r', c')로 이동할 수 있다. 당연히 격자 밖으로 나가는 것은 불가능하다.

세균들이 계획한 ii일의 모임 일정은 (Ri,Ci)(R_i, C_i)에서 열리고, 이 날 태양 빛의 세기에 따라 a=Aia = A_i, b=Bib = B_i가 정해진다. 세균들이 각자 최소의 에너지를 사용하여 이동한다고 할 때, 모든 칸의 세균들이 모이기 위해 세균들이 사용해야 하는 총 에너지 합을 구해주자. 단, 양파는 한 번에 세균 하나씩만 이동시킬 수 있다고 한다. 모든 세균들은 모임이 끝난 뒤 자기가 사는 양파로 돌아가는데, 이 때는 에너지를 소모하지 않는다.

입력

1번째 줄에 격자의 크기 NN, 착한 말을 했을 때의 이동 범위 DD, 모임 날짜의 수 QQ가 공백으로 구분되어 주어진다.

i+1i + 1번째 줄에는 길이 NN의 문자열로 격자의 ii번째 행의 상태가 주어진다. jj번째 문자가 .일 경우 (i,j)(i, j)는 나쁜 칸이며, #일 경우 착한 칸이다. (1≤i,j≤N1 \le i, j \le N)

i+N+1i + N + 1번째 줄에는 ii일의 모임 일정에 대한 정보 RiR_i, CiC_i, AiA_i, BiB_i가 공백으로 구분되어 주어진다. (1≤i≤Q1 \le i \le Q)

출력

ii번째 줄에 ii일의 모임 일정에서 세균들이 사용해야 하는 총 에너지 합을 출력한다. (1≤i≤Q1 \le i \le Q)

제한

  • 1≤D≤N≤5001 \le D \le N \le 500
  • 1≤Q≤51 \le Q \le 5
  • 1≤Ri,Ci≤N1 \le R_i, C_i \le N (1≤i≤Q1 \le i \le Q)
  • 1≤Ai,Bi≤1091 \le A_i, B_i \le 10^9 (1≤i≤Q1 \le i \le Q)

예제2

  1. 예제 1

    입력
    3 1 2
    #..
    ...
    ...
    1 1 10 1
    2 2 1 1
    
    예상 출력
    180
    11
    
  2. 예제 2

    입력
    8 2 4
    ........
    ........
    ....#...
    ........
    .......#
    ..#..#..
    ........
    ........
    6 1 3 1
    8 2 100 1
    4 3 1 3
    2 4 1 100
    
    예상 출력
    605
    17798
    263
    304