結果

問題 No.286 Modulo Discount Store
ユーザー TANIGUCHI KousukeTANIGUCHI Kousuke
提出日時 2015-11-05 10:30:52
言語 Ruby
(3.3.0)
結果
AC  
実行時間 339 ms / 2,000 ms
コード長 463 bytes
コンパイル時間 383 ms
コンパイル使用メモリ 11,544 KB
実行使用メモリ 15,976 KB
最終ジャッジ日時 2023-08-27 00:06:41
合計ジャッジ時間 6,648 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 83 ms
15,264 KB
testcase_01 AC 84 ms
15,128 KB
testcase_02 AC 141 ms
15,564 KB
testcase_03 AC 81 ms
15,124 KB
testcase_04 AC 82 ms
15,268 KB
testcase_05 AC 81 ms
15,136 KB
testcase_06 AC 203 ms
15,976 KB
testcase_07 AC 80 ms
15,268 KB
testcase_08 AC 81 ms
15,124 KB
testcase_09 AC 81 ms
15,200 KB
testcase_10 AC 112 ms
15,488 KB
testcase_11 AC 81 ms
15,280 KB
testcase_12 AC 81 ms
15,200 KB
testcase_13 AC 142 ms
15,720 KB
testcase_14 AC 82 ms
15,104 KB
testcase_15 AC 82 ms
15,260 KB
testcase_16 AC 85 ms
15,060 KB
testcase_17 AC 339 ms
15,960 KB
testcase_18 AC 112 ms
15,432 KB
testcase_19 AC 82 ms
15,240 KB
testcase_20 AC 88 ms
15,144 KB
testcase_21 AC 80 ms
15,292 KB
testcase_22 AC 82 ms
15,068 KB
testcase_23 AC 141 ms
15,780 KB
testcase_24 AC 83 ms
15,272 KB
testcase_25 AC 96 ms
15,600 KB
testcase_26 AC 81 ms
15,172 KB
testcase_27 AC 96 ms
15,604 KB
testcase_28 AC 205 ms
15,868 KB
testcase_29 AC 81 ms
15,168 KB
testcase_30 AC 80 ms
15,172 KB
testcase_31 AC 84 ms
15,028 KB
testcase_32 AC 86 ms
15,120 KB
testcase_33 AC 81 ms
15,196 KB
testcase_34 AC 82 ms
15,080 KB
testcase_35 AC 82 ms
15,140 KB
testcase_36 AC 80 ms
15,108 KB
testcase_37 AC 96 ms
15,524 KB
testcase_38 AC 82 ms
15,328 KB
testcase_39 AC 206 ms
15,644 KB
testcase_40 AC 83 ms
15,080 KB
testcase_41 AC 83 ms
15,176 KB
testcase_42 AC 82 ms
15,200 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

n = gets.to_i
P = n.times.map { gets.to_i }
S = 1 << n
DP = Array.new(S)
SP = Array.new(S,0)
S.times do |s|
    SP[s] = n.times.inject(0) {|t,i|
        mask = 1 << i
        mask & s > 0 ? t + P[i] : t
    }

    DP[s] = n.times.select {|i|
        mask = 1 << i
        mask & s > 0
    }.map {|i|
        mask = 1 << i
        disco = SP[s ^ mask] % 1000
        up = disco > P[i] ? 0 : P[i] - disco
        DP[s ^ mask] + up
    }.min || 0
end
puts DP[S - 1]
0