El de la distancia de edición (II) P48188


Statement
 

pdf   zip

A estas alturas, seguro que ya os suena lo de que algunos problemas son tan clásicos que bla, bla, bla. Nada nuevo: éste también lo es. Ahora, os pedimos que calculéis el coste mínimo de insertar letras o de modificar letras en dos palabras p1p_1 y p2p_2 para hacerlas idénticas. Ambas palabras están compuestas por letras escogidas de entre las nn primeras minúsculas (por ejemplo, para n=4n=4, el alfabeto es {a,b,c,d}\{a, b, c, d\}). Para cada letra (llamémosle xx), insertar una xx en cualquier lugar de cualquier palabra tiene coste IxI_x. El coste de transformar una letra xx en una letra yy viene dado por (Ix+Iy)/4\lceil (I_x+I_y)/4\rceil, es decir, una cuarta parte, redondeando para arriba, de la suma de los costes de inserción IxI_x y IyI_y.

Entrada

La entrada consiste en diversos casos. Cada caso empieza con 2n262\leq n\leq 26, seguido de nn naturales estrictamente positivos $I_{\mbox{\texttt{a}}}, I_{\mbox{\texttt{b}}}, I_{\mbox{\texttt{c}}}, \ldots$. Siguen dos palabras p1p_1 y p2p_2 con entre 1 y 1000 letras minúsculas elegidas entre las nn primeras. Podéis asumir 1Ix10001\leq I_x\leq 1000 para cada letra xx.

Salida

Para cada caso, escribid el coste mínimo de conseguir que p1p_1 y p2p_2 sean idénticas.

Public test cases
  • Input

    2
    11 10
    aaa
    aba
    
    4
    100 100 100 1
    abcd
    bcda
    
    3
    1 10 100
    abbcabccabbac
    bbcabacabbac
    
    4
    1 2 1 4
    dcbbcbbddccdabdbdbdcbbc
    cddcab
    

    Output

    6
    54
    27
    35
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++