複数のナップザック問題バイナリ最適化

アルゴリズム:バイナリ最適化、動的プログラミング

書式#include <iostreamの> 
の#include <アルゴリズム> 
書式#include <CStringの>
 使用して 名前空間はstdを、
const  int型 N = 2010 ;
int型V [N]、[N]、W、CNT。
INT F [N]。
INTメイン(ボイド){
     int型N、M。
    CIN >> N >> M。
    int型 I = 1、A、B、Sであり; iは<= N; iが++ ){ 
        CIN >> A >> B >> S。
 
        int型のk = 1 一方、(K <= S){ 
            CNT ++; 
            V [CNTは】 *の= Kと、
            W [CNTは]のb * = Kと、
            S - = K。
            K * = 2 ; 
        } 
        もし、(S> 0 ){ 
            CNT ++ 
            V [CNTは】 * = 秒; 
            W [CNT] = B * S。
        } 
    } 
    N = CNT。
    以下のためにint型 i = 1 ; iが<= N; iは++ ){
         ためINT J = M; J> = V [i]は、j--){
            F [J]= MAX([J]、F F [JV [I] + W [I])。
        } 
    } 
    COUT [M] << F << ENDL。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/programyang/p/11241585.html