6. 다중 배낭 문제 III을 AcWing

사용법 #include <iostream> 
#INCLUDE <알고리즘> 
#INCLUDE <CString을>
 사용  공간을 성병;
CONST  INT   N = 200,010 ;
INT의 N, m;
INT의 F [N], g [N], Q [N];
값 int () {메인
    CIN >> >> N m;
    위한 ( INT 난 = 0 , N 난 <; I ++ ) {
         INT의 C이고, W, S로 이루어진 그룹 중에서 선택되고;
        CIN w >> >> C (S);
        memcpy가 (G, F 는 sizeof F);
         ( INT J = 0 ; J <C, J ++ ) {
             INT의 HH = 0 , TT = - 1 ;
             ( INT의 K = J, K <= m] = K + C) {
                F [K] = g [K];
                경우 (HH <= TT && K-S * C> Q [HH]) HH ++ ;
                경우 (HH <= TT) F [K]가 최대 = (F [K], g [Q [HH] + (KQ [HH])로 / C * w);
                반면 (HH <= TT && g [Q [TT] - (Q [TT] -j) / C * w <= g [K] - (KJ) / C * w) tt-- ;
                Q [ ++ TT = K;
            }
        }
    }
    COUT << F [m] << ENDL;
    반환  0 ;
}

 

 

추천

출처www.cnblogs.com/QingyuYYYYY/p/11878208.html