[テンプレート]複数のバックパック

バイナリの最適化

#include <iostreamの> 
する#include <cstdioを> 
する#include <アルゴリズム> 
の#include <cstdlib> 
の#include <cmath>
 使用して 名前空間をSTD。
const  int型 MAXN = 25000 ;
const  int型 MAXM = 2005 ;
INT DP [MAXN]、VVは、S [MAXM]、V1 [MAXM]、W1 [MAXM]。
int型V2 [MAXN]、W2 [MAXN]。
int型CNT、N。
INT メイン()
{ 
    CIN >> N >> VV。
    以下のためにINT iが= 1 ; I <= N; I ++  
        CIN>> V1 [i]は>> W1 [I] >> S [i]は、
    以下のためにINT iが= 1 ; I <= N; I ++ 
    { 
        ためINT J = 1 ; J <= S [i]は、J << = 1 
        { 
            V2 [ ++ CNT] = J * V1 [i]が; 
            W2 [CNT] = J * W1 [i]は、
            S [i]は - = J。
        } 
        もし、(S [I])
        { 
            V2 [ ++ CNT] = S [I] * V1 [i]は、
            W2 [CNT] = S [I] * W1 [i]は、
        } 
    }
    以下のためにint型私は= 1 ; I <= CNT; I ++ のためのINT J = VV; J> = V2 [I]; j-- 
            DP [J] = MAX(DP [J]、DP [J-V2 [I] + W2 [I])。
    COUT << DP [VV]。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/lovezxy520/p/11838446.html
おすすめ