溶液
それも、時間を残しているので、それは初めてマイナス1 01バックパックは、この考えることは容易である、プラス曲678秒後に、細部への他のうまく注意。
コード
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 int型 [W N、T、100005 ]、[ 100005 [F]、100005 ]。 INT メイン(){ freopenは(" a.in "、" R " 、STDIN)。 INT T、CNT = 0 。 scanf関数(" %のD "、&T)。 一方、(T-- ){ scanf関数(" %d個の%のD "、&N、&T)。 - トン; フィル(F、F + T + 1、0 ); //は+1以下に覚えF [T]がクリアされ (A、A塗りつぶし + T + 1、0 ); のための(int型私は= 1 I <= N; Iは++ ) scanfの(" %のD "、&W [I]); のための(INT I = 1 ; I <= N; I ++ ) のための(INT J = T; J> = W [I]; J、 ) IF(F [J] <F [ JW [I] + 。1 ) F [J] = F [JW [I] + 。1、A] + [J]は[JW [I =] Wを[I]; //全長を作るも、最もため長い 他 IF(F [J] == F [JW [I] + 。1 && A [J] <[JW [I] + W [I])//全長記録しながら A [j]を [JWを[=私は]] + W [I]; のprintf(" :ケース%のD D%D%\ N- "、CNT ++、F [T] + 1。、A [T] + 678 ; //は最終的に+ 1再) 678 } }