Greedy Algorithms (貪欲アルゴリズム)
Greedy Algorithms (貪欲アルゴリズム) は、最終的な解を段階的に構築していくにあたり、各ステップで最も明白・最適と思われる選択肢を取り続ける手法の総称です。考え方がシンプルな場合が多いものの、各段階で何を基準に選ぶか(ヒューリスティック)を決めるのが難しいケースもあります。
Challenge(課題)
ナップサックと
n
個のアイテムがあります。できるだけ多くのアイテムを入れたいのですが、もし合計重量が閾値 t
を超えてしまうとナップサックが破れてしまいます。そこで、ナップサックが無事なままで入れられるアイテムの最大数を知りたい、という問題です。 Input(入力)
最初の行には、
n
(1 ≤ n ≤ ) と t
(1 ≤ t ≤ ) の 2 つの整数が与えられます。これはアイテムの個数と、ナップサックが耐えられる最大重量の閾値を意味します。次の行には、
n
個の整数 (1 ≤ ≤ ) がスペース区切りで与えられます。これは各アイテムの重量を表しています。 Output(出力)
持ち運べるアイテムの最大数を出力してください。
Examples(サンプル)
入力 | 出力 |
7 10
4 1 2 5 8 7 1 | 4 |
Explanation(解説)
We can carry
1, 2, 5, 1
, or 4, 1, 2, 1
, or 1, 2, 7, 1
. For all of the cases there are 4 items in total.Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB