結果
| 問題 |
No.90 品物の並び替え
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-08-01 17:41:18 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 103 ms / 5,000 ms |
| コード長 | 728 bytes |
| コンパイル時間 | 334 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-11-06 21:47:13 |
| 合計ジャッジ時間 | 2,018 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 9 |
コンパイルメッセージ
Syntax OK
ソースコード
inputs = STDIN.readlines.map(&:chomp)
N, M = inputs[0].split(/\s+/).map(&:to_i)
SCORES = inputs[1..-1].map { |line| line.split(/\s+/).map(&:to_i) }
class Calc
def initialize
@memos = Hash.new
@merchandises = (0...N).to_a
@score_table = Hash.new { |h, k| h[k] = Hash.new }
SCORES.each do |t|
@score_table[t[0]][t[1]] = t[2]
end
end
def run
dp([])
end
def dp(used)
if (@merchandises - used).empty?
res = 0
elsif @memos[used]
res = @memos[used]
else
res = (@merchandises - used).map { |m|
used.map { |u| @score_table[u][m].to_i }.inject(:+).to_i + dp((used + [m]).sort)
}.max
end
@memos[used] = res
res
end
end
puts Calc.new.run