バックパック--HDU-2159-D

タイトルの意味

 ああ。各モンスターは経験と忍耐の対応度を有しています

Q.あなたは持久力と殺害の限られた数にアップグレードするために必要な経験を得ることができます

そう、許容レベルの最大の度合いを入力した場合承を予約することができます

トピック分析

数の殺害には制限がバックパック持久力として見られないがある場合には、耐久性の最大のバックパック完全な経験を探しメートルを得ることができます

死滅は各モンスターの数には限界があり、それは、複数のバックパックである場合

しかし、最終的にはどちらもこの質問が、2次元のバックパック殺したレコードの数ではありません

トピックコード

書式#include <iostreamの> 
書式#include <stdio.hに> 
する#include < 文字列の.h> 
の#include <アルゴリズム>
 使用して 名前空間はstdを、
typedefの長い 長いLL。
const  int型 MAXN = 107 ;
INTのN、M、K、S。
構造体ノード{
     int型のval;
    int型のコスト。
}月[ 507 ]。
int型DP [MAXN] [MAXN]。
INT メイン(){
     ながら(〜のscanf(" %D%D%D%D "、&​​N、&M、&K&S)){
         int型 i = 1 ; iが= Kを<; Iは++ 
            のscanf(" %D%dの"、&月[I] .val、&月[I] .cost)。
        memsetの(DP、0はsizeof (DP))。
        以下のためにint型 i = 1 ; iが= Kを<; I ++ のためのINT J =月[I] .costあり、j <= Mであり、j ++ のためのINT T = 1 ; T <= Sであり; t ++ ){ 
            DP [ J] [T] = MAX(DP [J] [T]、DP [J-MON [I] .cost] [T- 1 ] + 月[I] .val)。
        } 
        場合(DP [M] [S] <N)のprintf(" -1の\ n " );
        他の{
             int型のmx。
            (MX = 0 ; MX <= M; MX ++ 場合(DP [MX] [S]> = N)、ブレーク
            printf(" %d個の\ n "、M- MX)。
        } 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/helman/p/11232237.html