만드는 중입니다

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

보물 상자 열기

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

요약
각 시작 위치에서 문자열을 팰린드롬으로 만드는 데 드는 교체 비용과 한 칸당 c의 이동 비용을 합한 최솟값을 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 문자열, 누적 합
정답자
아직 제출이 없습니다

문제

어피치는 전설 속의 보물을 찾기 위해 여행을 떠났고, 여러 관문을 돌파한 끝에 보물이 들어 있으리라 추정되는 상자를 찾았다. 하지만 상자에는 잠금장치가 걸려 있었고, 그 아래에는 "상자를 열려면 상자 아래의 글자들을 잘 바꾸어 앞으로 읽으나 뒤로 읽으나 똑같아지도록 하라"라는 글귀가 쓰여 있었다.

상자 근처를 살펴보니 상자 아래에 알파벳이 쓰인 석판 여러 장이 일렬로 놓여 있었다. 상자 주위에는 알파벳이 쓰인 석판이 훨씬 더 많았다. 석판들을 적절히 교체하여 상자 아래 일렬로 놓인 석판들을 회문(앞에서 뒤로 읽으나 뒤에서 앞으로 읽으나 똑같은 낱말, 숫자, 또는 문장)으로 만들면 상자가 열리는 듯하다. 어피치는 체력이 얼마 남지 않아서, 체력을 최대한 아껴 보물을 얻고자 한다. 석판을 교체하는 데 드는 체력은 석판마다 다르다. 또한 한 칸 이동할 때마다 체력이 cc만큼 소모된다. 예를 들어 이전 위치가 ii번째 석판이었는데 이번에 jj번째 석판을 교체하고자 한다면, 그 위치까지 이동하는 동안 c⋅∣j−i∣c \cdot |j - i|의 체력이 소모된다. NN개의 석판 각각에 대해, 그 석판이 있는 위치에서 시작할 때 보물을 얻기 위해 소모되는 최소 체력을 구하시오.

입력

첫 줄에 테스트 케이스의 개수 TT(1≤T≤100,0001 \le T \le 100,000)가 주어진다.

다음 줄부터 TT개의 테스트 케이스가 아래 형식으로 주어진다.

첫째 줄에 석판의 개수 NN(1≤N≤1,000,0001 \le N \le 1,000,000)과 한 칸 이동할 때 소모되는 체력 cc(1≤c≤1091 \le c \le 10^9)가 주어진다.

둘째 줄에 길이 NN인 문자열이 주어진다. 문자열의 ii번째 문자는 ii번째 석판에 쓰인 문자이며, 각 문자는 알파벳 대문자이다.

셋째 줄에 NN개의 정수가 주어진다. ii번째 수는 ii번째 석판을 교체하는 데 소모되는 체력이며, 1 이상 10910^9 이하이다.

주어지는 모든 NN의 합은 1,000,000을 넘지 않는다.

출력

각 테스트 케이스에 대해, 각 석판이 있는 위치에서 시작했을 때 어피치가 소모해야 하는 최소 체력을 공백으로 구분하여 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    5 1
    ABCDE
    7 1 4 5 1
    5 1
    ABCDA
    7 1 4 5 1
    
    예상 출력
    6 5 6 6 5
    2 1 2 3 4