ACWING 282-fusión de piedra (intervalo DP)

Dirección: https://www.acwing.com/problem/content/284/

 

 

     Tema: Dar un montón de piedras, fusiones adyacentes, preguntar el costo mínimo, el algoritmo específico está en la pregunta.

     Resolución:

        Para esta pregunta, según el sentido común, para el estado final, los dos grupos se fusionaron. Por lo tanto, defina dp [i] [j] para representar el valor mínimo de la fusión del intervalo ij.

        Se fusionan dos pilas: dp [1] [2] = dp [1] [1] + dp [2] [2] + suma [1 ~ 2];

                即 dp [i] [i + 1] = dp [i] [i] + dp [i + 1] [i + 1] + suma [i ~ i + 1];

            Tres pilas combinadas: dp [1] [3] = min (dp [1] [1] + dp [2] [3], dp [1] [2] + dp [3] [3]) + suma [1 ~ 3];

              dp [i] [i + 2] = min (dp [i] [i] + dp [i + 1] [i + 2], dp [i] [i + 1] + dp [i + 2] [i +2]) + suma [i ~ i + 2];

           En resumen, se extiende a la fusión de la pila i-ésima con la pila j-ésima, dp [i] [j] = min (dp [i] [j], dp [i] [k] + dp [k + 1] [j] + suma [j] -sum [i-1]);

           Tres fors es equivalente a atravesar cada intervalo de longitud.

           Se siente un poco flojo ... Encuentra un punto de tránsito

#include <iostream> 
#include <cstdio> 
#include <cstring>
 const  int maxn = 500 ;
const  int inf = 1e9;
int dp [maxn] [maxn];
int a [maxn], suma [maxn];
usando el  espacio de nombres estándar;
int main () 
{ 
    int n; 
    cin >> n; 
    suma [ 0 ] = 0 ;
    para ( int i = 1 ; i <= n; i ++ ) 
    { 
        cin >>  a [i];
        sum [i] = suma [i- 1 ] + a [i]; 
    } 
    for ( int len = 2 ; len <= n; len ++ ) 
    { 
        for ( int l = 1 ; l + len- 1 <= n; l ++ ) 
        { 
            int r = l + len- 1 ; 
            dp [l] [r] = inf;
            para ( int k = l; k <r; k ++ ) 
            { 
                dp [l] [r] = min (dp [l] [r], dp [l] [k] + dp [k + 1 ] [r] + suma [r] -sum [l- 1 ]); 
            } 
        }
    } 
    cout << dp [ 1 ] [n] << endl; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/liyexin/p/12683151.html
Recomendado
Clasificación