사용법 #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 ; }