무르탈 카우배트

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

요약
길이 N인 문자열을 같은 문자가 K번 이상 연속하는 구간들로 바꾸되, i에서 j로 한 글자를 바꾸는 비용이 M개 문자 그래프의 최단 경로로 주어질 때 총비용을 최소화한다.
난이도

보통10점 중 7점

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

문제

Bessie는 인기 격투 게임 무르탈 카우배트를 오래 즐겨 왔다. 그런데 최근 게임 개발진이 업데이트를 내놓으면서 Bessie는 플레이 방식을 바꿔야 한다.

이 게임은 알파벳 소문자 처음 MM개로 이름 붙인 MM개의 버튼을 쓴다(1≤M≤261 \leq M \leq 26). Bessie가 가장 좋아하는 콤보는 버튼 입력 NN개로 이루어진 길이 NN의 문자열 SS이다(1≤N≤1051 \leq N \leq 10^5). 하지만 최근 업데이트 때문에 모든 콤보는 이제 "연속 구간"의 나열로 만들어야 한다. 연속 구간이란 같은 버튼을 KK번 이상 연속으로 누른 구간을 말한다(1≤K≤N1 \leq K \leq N). Bessie는 자신이 좋아하는 콤보를 같은 길이 NN의 새 콤보로 바꾸되, 바뀐 규칙에 맞게 버튼 입력의 연속 구간들로 이루어지도록 만들고 싶다.

Bessie가 콤보의 특정 위치에서 버튼 ii 대신 버튼 jj를 누르도록 연습하는 데는 aija_{ij}일이 걸린다. 즉 SS의 특정 글자 하나를 ii에서 jj로 바꾸는 데 aija_{ij}가 든다. 버튼 ii에서 중간 버튼 kk로 바꾼 뒤 버튼 kk에서 버튼 jj로 바꾸는 편이 ii에서 jj로 곧바로 바꾸는 것보다 시간이 덜 걸릴 수도 있다. 더 일반적으로, ii에서 출발해 jj로 끝나는 일련의 변경 경로가 ii를 최종적으로 jj로 바꾸는 최선의 비용을 줄 수도 있다.

Bessie가 새 규칙을 만족하는 콤보를 만드는 데 필요한 최소 일수를 구하라.

입력

첫째 줄에 NN, MM, KK가 주어진다. 둘째 줄에 SS가 주어지고, 마지막 MM개 줄에 M×MM\times M 크기의 값 aija_{ij} 행렬이 주어진다. aija_{ij}는 0…10000 \ldots 1000 범위의 정수이고 모든 ii에 대해 aii=0a_{ii} = 0이다.

출력

Bessie가 콤보를 새 규칙을 만족하는 콤보로 바꾸는 데 필요한 최소 일수를 하나의 수로 출력한다.

힌트

이 예제의 최적해는 a를 b로 바꾸고, d를 e로 바꾼 뒤, 두 e를 모두 c로 바꾸는 것이다. 1+4+0+0=51+4+0+0=5일이 걸리고, 최종 콤보 문자열은 bbccc가 된다.

예제1

  1. 예제 1

    입력
    5 5 2
    abcde
    0 1 4 4 4
    2 0 4 4 4
    6 5 0 3 2
    5 5 5 0 4
    3 7 0 5 0
    
    예상 출력
    5