실행 시간 제한 | 메모리 제한 |
---|---|
1 초 | 512 MB |
지원은 격투 게임 'Mortal Cowmbat'을 오랫동안 즐겨 했습니다. 하지만, 최근 게임 개발자들이 업데이트를 통해 지원의 플레이 스타일을 바꾸게 만드는 변경사항을 도입했습니다.
게임에서는 첫 번째 소문자부터 번째 소문자()로 태깅된 개의 버튼을 사용합니다. 지원이 게임에서 가장 좋아하는 조합은 버튼을 누르는 길이 의 문자열 입니다 ().
그러나, 가장 최근의 업데이트에 따르면, 이제 모든 조합은 적어도 한번에 번 눌러야 하는 동일한 버튼의 일련의 "연속된" 조합으로 이루어져야 합니다 (). 지원은 자신이 가장 좋아하는 조합을 수정하여 동일한 길이 의 새로운 조합을 만들려고 합니다. 하지만 이 새로운 조합은 버튼을 연속적으로 누르는 규칙을 만족해야 합니다.
지원의 조합에서 특정 위치의 버튼 를 로 바꾸려면 일이 걸립니다 (즉, 에서 특정 문자를 에서 로 바꾸는 데 의 비용이 듭니다). 에서 로 직접 바꾸는 것보다 에서 중간 버튼 를 사용하고, 다음과 에서 로 바꾸는 것이 더 적은 시간을 소요할 수 있습니다 (또는 더 일반적으로, 에서 시작하여 에서 끝나는 최적의 비용을 제공하는 변경 경로가 있을 수 있습니다).
지원이 새로운 요건을 충족하는 조합을 만들기 위해 필요한 최소한의 일 수를 결정하는 데 도움을 주세요.
입력의 첫 번째 줄에는 , , 그리고 가 있습니다. 두 번째 줄에는 가 포함되어 있고, 마지막 줄은 값의 행렬을 포함하고 있습니다. 여기서 는 범위 내의 정수이며, 모든 에 대하여 입니다.
지원이 새로운 요구사항을 만족하는 조합으로 자신의 조합을 바꾸는 데 필요한 최소 일수를 나타내는 하나의 숫자를 출력하세요.
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
이 예제에서 최적의 해결책은 a를 b로 바꾸고, d를 e로 바꾼 다음, 두 e를 c로 바꾸는 것입니다. 이 과정은 총 일이 걸리며, 마지막 조합 문자열은 bbccc가 됩니다.
출처: USACO 2019 December Contest, Gold Problem 3. Moortal Cowmbat