가중치가 있는 삽입, 삭제, 교체 비용으로 두 문자열 A와 B 사이의 최소 편집 거리를 구하고, 예산 K를 넘으면 TOSS를 출력한다.
보통7동적 계획법문자열아직 제출이 없습니다시간 제한2초메모리 제한512 MBPry 수열은 소문자 알파벳 a부터 z까지만 이어 붙인 문자열이다. 새 Pry 수열을 기록하려면 이미 있는 수열에서 출발해 편집해야 하고, 편집 한 번마다 요금이 붙는다.
각 문자에는 값이 정해져 있다. val(a)=1, val(b)=2, val(c)=3, 같은 식으로 val(z)=26까지다.
기존 수열을 A=a1a2…an, 기록하려는 새 수열을 B=b1b2…bm이라고 하자. 쓸 수 있는 편집은 세 가지다.
예를 들어 ary를 tray로 바꾸는 한 가지 방법은 요금이 3.21이다. t를 넣어 tary를 만들고(1.2), a를 지워 try를 만들고(1), 다시 a를 넣어 tray를 만든다(1.01). 더 싸게 하는 방법도 있다. a를 t로 교체해 try를 만들고(2.1) a를 넣으면(1.01) 요금은 3.11이다.
A와 B, 그리고 예산 K가 주어진다. A에서 B를 만드는 최소 요금을 구한다. 최소 요금이 K보다 크면 그 수열은 아예 기록하지 않으므로, 요금 대신 TOSS를 출력한다.
첫 줄에 테스트 케이스의 개수 T (1≤T≤20)가 주어진다. 이어서 테스트 케이스마다 세 줄이 주어진다.
두 수열은 공백이나 구두점 없이 소문자 알파벳만 이어 붙인 형태로 주어지고, 길이는 각각 1≤n≤20000, 1≤m≤20000을 만족한다.
T개의 줄을 출력한다. i번째 줄에는 i번째 테스트 케이스의 답을 쓴다. 최소 요금이 K 이하이면 그 요금을 소수점 아래 넷째 자리까지 정확히 출력하고, K보다 크면 TOSS를 출력한다. 나올 수 있는 요금은 모두 0.01의 배수이므로 넷째 자리까지 쓴 표기는 오차 없이 결정된다.