[HDU2191] Para llorar a las víctimas del terremoto de 512 Wenchuan: apreciar el presente y estar agradecido por la vida (múltiples mochilas / DP simple)

Llorar a las víctimas del terremoto de 512 Wenchuan: apreciar el presente y estar agradecido por la vida

Límite de tiempo: 1000/1000 MS (Java / otros) Límite de memoria: 32768/32768 K (Java / otros)

Descripción del problema

¡ansioso! ¡La comida en el área del desastre aún es escasa!
Para salvar las vidas de los compatriotas en el área afectada por el desastre, usted, que se preocupa por los compatriotas en el área afectada por el desastre, va a comprar algo de comida para apoyar las áreas afectadas por el desastre. Ahora suponga que tiene un total de de n yuanes y hay m variedades de arroz en el mercado, y solo se puede comprar en bolsas enteras.
Disculpe: ¿Cuántos kilogramos de grano puede comprar con fondos limitados?
Escriba la descripción de la imagen aquí
Posdata: La
vida es un proceso vital lleno de variables.Los desastres naturales, los desastres provocados por el hombre y las enfermedades son amenazas impredecibles en el curso de nuestra vida.
La luna está llena de nubes y sol, y la gente tiene desgracias y bendiciones, el futuro es un desconocido para nosotros. Entonces, lo que tenemos que hacer ahora debe ser apreciado, estar agradecido -
agradecido a sus padres, ellos nos dan la vida, nos criamos adultos;
agradecer a un maestro, nos otorgaron el conocimiento para enseñarnos
a agradecer a los amigos, nos dejaron sentir el World Warmth;
gracias a los oponentes, nos mantienen emprendedores y trabajando duro.
Del mismo modo, también queremos agradecer la riqueza que nos brindan el dolor y las dificultades ~

Entrada

Los datos de entrada primero contienen un entero positivo C, lo que indica que hay grupos de casos de prueba C. La primera línea de cada grupo de casos de prueba son dos números enteros n y m (1 <= n <= 100, 1 <= m <= 100), respectivamente Indica el monto del gasto y el tipo de arroz, seguido de m filas de datos, cada fila contiene 3 números p, hyc (1 <= p <= 20,1 <= h <= 200,1 <= c <= 20), indicando el precio de cada saco, el peso de cada saco y el número de sacos del tipo de arroz correspondiente.

Salida

Para cada conjunto de datos de prueba, proporcione el peso máximo de arroz que se puede comprar. Puede asumir que los fondos no solo compran todo el arroz, sino que también puede usar los fondos. La salida de cada instancia ocupa una línea.

Entrada de muestra

1
8 2
2100
4 4100 2

Salida de muestra

400

Fuente

2008-06-18 "Diseño del programa ACM" Final Exam-Go Sichuan! ¡Ve a China!

El problema es un problema evidente de múltiples mochilas, solo un cambio de peso y costo. Sabemos que la mochila 01 tiene solo uno de cada artículo, y la mochila completa tiene un número ilimitado de cada artículo. La mochila múltiple es un número limitado de cada artículo.

Entonces, simplemente ejecute un lado en la idea de una mochila completa .

Si no ha aprendido una mochila, consulte las Nueve lecciones sobre la mochila http://www.cnblogs.com/jbelial/articles/2116074.html

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"

using namespace std;

const int maxn = 1e3+5;

int dp[maxn];
int w[maxn],v[maxn],s[maxn];
int n,m;

int max( int a,int b ){
    return a>b ? a:b;
}

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        memset(dp,0,sizeof(dp));
        scanf("%d%d",&n,&m);
        for( int i=0 ; i<m ; i++ ){
            scanf("%d%d%d",&w[i],&v[i],&s[i]);
        }
        int k=1;
        for(int i = 0; i <  m; i++)  
        {  
            for(int j = 1; j <= s[i]; j++)  
            {  
                for(int k = n; k >= w[i]; k--)  
                {  
                    dp[k] = max(dp[k], dp[k-w[i]] +v[i]);  
                }  
            }  
        } 
        printf("%d\n",dp[n]);
    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/thesprit/article/details/52026725
Recomendado
Clasificación