Module: 貪欲なアルゴリズム


Problem

1 /9


フォルマッジョがパンツェロッティを購入

Theory Click to read/hide

貪欲アルゴリズムは、最終的なソリューションが全体的な意味で最適であることを期待して、各ステップで最適な (現在のステップ内で) バリアントを選択するアルゴリズムです。

小さな例:
さまざまな額面のコインが無制限にあり、金額 S を集める必要があるとします。2 つの具体的なケースを考えてみましょう。それぞれを貪欲なアルゴリズムで解決しようとします。
つまり、次のように動作します。各ステップで、残額を超えない最高額面のコイン (ステップ内で最良の選択肢) を 1 枚取り出します。

a) 硬貨の額面を 1、5、10 とし、S = 27 とします。
1) テイク 10、S: 27 -> 17
2) テイク 10、S: 17 -> 7
3) テイク 5、S: 7 -> 2
4) テイク 1、S: 2 -> 1
5) テイク 1、S: 1 -> 0
その結果、彼らは5枚のコインを獲得しました。 4 コイン以下では 27 点を獲得できないことを独自に (たとえば総当たりで) 確認できます。

b) コインの額面を 1、5、7 とし、S = 24 とします。
1) テイク 7、S: 24 -> 17
2) テイク 7、S: 17 -> 10
3) テイク 7、S: 10 -> 3
4) テイク 1、S: 3 -> 2
5) テイク 1、S: 2 -> 1
6) テイク 1、S: 1 -> 0.
6枚のコインで得点しましたが、額面7の2枚と額面5の2枚の計4枚のコインでSを獲得できました。

この例からわかるように、貪欲なアルゴリズムで問題を解決できるとは限りません。しかし、全体として最適な答えが得られるのであれば、通常は動的計画法や他の手法を使用するよりも簡単です。

Problem

フォルマッジョは、さまざまな詰め物が入ったパンゼロッティがとても好きで、どれがどれであるかはそれほど重要ではありません。お腹がすいたとき、フォルマッジョはパン屋に行き、トマト、ほうれん草、きのこが入ったパンツェロッティが売られているのを見ました。
フォルマッジョはできるだけ多くのパンツェロッティを購入したいと考えていますが、問題は、フォルマッジョのお金と同じように、販売されるパンツェロッティの数が限られていることです。

フォルマッジョが購入できるパンゼロッティの最大数を決めるのを手伝ってください。

入力:
最初の行には、数値 P1、P2、および P3 が含まれています –トマト、ほうれん草、マッシュルームのそれぞれのパンゼロッティのコスト。
2 行目では、N1、N2、および N3 の値を定義しています –一致するパンゼロッティの販売数。 
3 行目には数値 R – が含まれています。フォルマッジョが持っている金額. 
入力のすべての数値は、10000 を超えない正の整数です。

出力:
単一の整数を出力してください - フォルマッジオが購入できるパンゼロッティの最大数です。

例:
  <本体>
入力 出力
5 3 8
2 6 4
23
7