提出 #67889585


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

/////////////////// メイン ///////////////////

int main () {
  
  //////////////////// 入力 ////////////////////

  int n;
  cin >> n;

  // w+sの値でソートしたいので、4つ組にする
  vector<tuple<int,int,int,int>> a(n);
  for (int i=0; i<n; i++) {
    int w, s, v;
    cin >> w >> s >> v;
    a.at(i) = {w+s,w,s,v};
  }

  //////////////// 出力変数定義 ////////////////

  long long result = 0;

  //////////////////// 処理 ////////////////////

  // w+sが小さい順にソートしておく
  sort(a.begin(),a.end());

  // DPテーブル
  // dp.at(i).at(j)は、i番目まで使う場合の総重量jでの最大価値
  vector<vector<long long>> dp(n+1,vector<long long>(get<0>(a.back())+1,-1e18));
  dp.at(0).at(0) = 0;

  // w+sが小さい順にDP
  for (int i=0; i<n; i++) {

    auto [ws,w,s,v] = a.at(i);

    // とりあえず、それを使わない場合のを全部コピー
    dp.at(i+1) = dp.at(i);

    // 注目の荷物の上に載せられるやつパターン全部処理
    for (int j=0; j<=s; j++) {
      dp.at(i+1).at(j+w) = max(dp.at(i+1).at(j+w),dp.at(i).at(j)+v);
    }

  }

  // 全部使う場合の任意の重さでの最大価値が答え
  result = *max_element(dp.at(n).begin(),dp.at(n).end());

  //////////////////// 出力 ////////////////////

  cout << result << endl;

  //////////////////// 終了 ////////////////////

  return 0;

}

提出情報

提出日時
問題 X - Tower
ユーザ wightou
言語 C++ 23 (gcc 12.2)
得点 100
コード長 1519 Byte
結果 AC
実行時間 89 ms
メモリ 163492 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 25
セット名 テストケース
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20
ケース名 結果 実行時間 メモリ
0_00 AC 1 ms 3532 KiB
0_01 AC 1 ms 3492 KiB
0_02 AC 1 ms 3732 KiB
0_03 AC 1 ms 3540 KiB
1_00 AC 1 ms 3604 KiB
1_01 AC 89 ms 163492 KiB
1_02 AC 5 ms 11004 KiB
1_03 AC 2 ms 3560 KiB
1_04 AC 2 ms 3708 KiB
1_05 AC 1 ms 3684 KiB
1_06 AC 2 ms 3996 KiB
1_07 AC 2 ms 5208 KiB
1_08 AC 4 ms 7920 KiB
1_09 AC 9 ms 18452 KiB
1_10 AC 24 ms 47836 KiB
1_11 AC 80 ms 155248 KiB
1_12 AC 44 ms 81320 KiB
1_13 AC 43 ms 81292 KiB
1_14 AC 44 ms 81292 KiB
1_15 AC 43 ms 81492 KiB
1_16 AC 44 ms 82072 KiB
1_17 AC 45 ms 83372 KiB
1_18 AC 46 ms 88332 KiB
1_19 AC 53 ms 101628 KiB
1_20 AC 82 ms 159500 KiB