F - Perlas HDU - 1300

dp simple.

Sujeto al efecto: hay n perlas, perlas de tener este tipo de n diferentes diferentes precios de demanda, mayor será el precio, mayor será la calidad, la compra de cada perla, lo que necesita para comprar 10 en la base original. Esto significa que si usted necesita comprar x tipos de perlas, que tendría que pagar x + 10º dinero. Cada perla debe ser mayor que el precio de compra igual a su propia perla

Introduzca un t (100 o menos) T representa el grupo de prueba, a n, n tipos de perla, A [i] y P [i] denota el i-ésimo perlas demanda Precio. Estrictamente creciente precio, pida al menor costo posible.

Solución: El costo total de la compra de la dp i-th perlas requieren definen [i]. Las perlas i-ésimo se pueden comprar por separado, y también se puede comprar un delantero. Aquí frontal debe ser i-1, i-1 y I-2, o i-1, I-2, I-3. La atención debe ser continua, sólo compro y no comprar i-2 i-1 en este caso debido a que el precio no va a aparecer estrictamente creciente, ya que el precio debe ser mayor que i i-1 e I-2 y I -1 uno tiene que comprar y me paso una cierta cantidad menor que el costo de una compra.

Por lo tanto, la ecuación de transición de estado:

  1 comprar directamente, dp [i] = dp [i-1] + (arr [i] 10) * p [i];

  2 y la pieza delantera:

    para (j, 0, i) dp [i] = min (dp [i], dp [J] + (suma [i] -sum [j] 10) * p [i])

código:

  

#include <bits / STDC ++ h.>
 usando  espacio de nombres std; 
typedef largo  largo ll;
const ll N = 1E5 + 7 ; 
ll dp [N]; 
ll arr [N], p [N]; 
suma ll [N]; 
vacío solve () 
{ 
    memset (suma, 0 , sizeof suma); 
    memset (dp, 0 , sizeof dp); 
    ll n; 
    cin >> n;
    para (ll i = 1 ; i <= n; i ++ ) { 
        cin >> arr [i] >> p [i]; 
        suma [i] = suma [i- 1] + Arr [i]; 
    } 
    Para (ll i = 1 ; i <= n; i ++ ) { 
        dp [i] = dp [i- 1 ] + (arr [i] + 10 ) * p [i];
        para (ll j = 0 ; j <i; j ++ ) 
            dp [i] = min (dp [i], dp [J] + (suma [i] -sum [j] + 10 ) * p [i]); 
    } 
    Cout << dp [n] << endl; 
} 
Int main () { 
    ios :: sync_with_stdio ( 0 ); 
    ll t; cin >> t;
    mientras que (t-- ) resolver (); 

    volver  0 ;
}

 

Supongo que te gusta

Origin www.cnblogs.com/Accepting/p/12532675.html
Recomendado
Clasificación