만드는 중입니다

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

기지방호

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

요약
대형 F개와 날마다 마지막에 정해진 대형이 주어질 때, 하루 T번씩 L일 동안 대형을 바꾸는 피로도 합의 최솟값을 구합니다.
난이도

보통10점 중 7점

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

문제

오늘부터 LL일 동안 훈련 기간이다. 훈련 기간에 매일 부대원들은 기지방호 전술집에서 선별한 진법들을 시연해야 한다.

훈련을 위해 기지방호 전술집에서 FF개의 진법을 선별하여 1번부터 FF번까지 번호를 붙였다. xx번 진법을 C[x]C[x]로 나타낸다 (1≤x≤F1 \le x \le F). 각 진법은 훈련 장소에 맞춰 N×MN \times M 칸으로 주어진다. C[x]ijC[x]_{ij}는 진법 C[x]C[x]의 ii번째 행, jj번째 열 칸을 뜻하며, 그 칸에 사람이 서 있어야 하면 1, 아니면 0이다. 단, C[1]C[1]은 모든 ii, jj (1≤i≤N1 \le i \le N, 1≤j≤M1 \le j \le M)에 대해 C[1]ij=0C[1]_{ij} = 0을 만족한다.

훈련의 첫째 날은 C[1]C[1] 진법부터 시작하고, 둘째 날부터는 전날 마지막으로 시연한 진법에서 시작한다. 하루가 끝날 때까지 TT회에 걸쳐 추가로 진법을 시연한다.

진법이 바뀔 때마다 병사들의 피로도가 쌓인다. 현재 시연 중인 진법이 C[A]C[A]이고 다음에 시연할 진법이 C[B]C[B]이면, C[A]ijC[A]_{ij}와 C[B]ijC[B]_{ij}가 서로 다른 (i,j)(i, j) 쌍의 개수를 제곱한 값만큼 피로도가 더해진다 (1≤i≤N1 \le i \le N, 1≤j≤M1 \le j \le M).

각 날의 마지막으로 시연할 진법은 이미 정해져 있다. 주임원사님은 으뜸병사에게 나머지 시연할 진법을 선별된 진법들로 채워서 총피로도가 최소가 되도록 루틴을 짜라고 명령했다. 그 루틴의 총피로도를 구하라.

입력

첫 번째 줄에 진법의 개수 FF, 훈련 기간 LL, 하루에 시연할 진법의 개수 TT, 훈련 장소의 크기 NN, MM이 공백으로 구분된 정수로 주어진다.

두 번째 줄부터 C[1],C[2],⋯ ,C[F]C[1], C[2], \cdots, C[F] 진법의 정보가 순서대로 주어지며, 진법마다 NN줄씩 모두 F×NF \times N줄에 걸쳐 있다. 각 진법은 NN줄에 걸쳐 MM개의 값이 공백으로 구분되어 주어진다. ii번째 줄의 jj번째 값이 C[x]ijC[x]_{ij}이며, 각 값은 0 또는 1이다.

이후 첫 번째 날부터 LL번째 날까지 각 날의 마지막으로 시연할 진법의 번호 l1,l2,⋯ ,lLl_1, l_2, \cdots, l_L이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 피로도를 최소화하는 루틴의 총피로도를 출력한다.

제한

  • 2≤F≤502 \le F \le 50
  • 1≤L≤1 000 0001 \le L \le 1\,000\,000
  • 1≤T≤1 000 0001 \le T \le 1\,000\,000
  • 1≤N,M≤501 \le N, M \le 50
  • 1≤lk≤F1 \le l_k \le F (1≤k≤L1 \le k \le L)
  • 모든 ii, jj (1≤i≤N1 \le i \le N, 1≤j≤M1 \le j \le M)에 대해 C[1]ij=0C[1]_{ij} = 0

예제2

  1. 예제 1

    입력
    3 5 2 2 2
    0 0
    0 0
    0 1
    0 0
    0 1
    1 0
    3 2 1 3 1
    
    예상 출력
    8
    
  2. 예제 2

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