、彼らは何かが欠けていたと感じているように見えるエンドポイントディッシュましたか?
再び無名の林先輩すぐに帰って考えてみたが物思いにふけっ。。。。。。。。。
彼はフロントデスクに静かErguotouのいくつかのボトルを指すように意図しています。
彼は、メニュー上に見出されるN個の ワインの異なるmLの種類の Iは で植え2 I - 1 mLの価格は、C Iは、 要素は、ワインの各タイプの数が無限大と考えることができる記憶します。。
自分の飲み物の多くまたは少しBツリーが、彼は楽しみの飲み物を飲む必要があると考えているので、彼は少なくともL mlに購入する予定が、少なくともお金を費やす必要があり、今、彼は、彼は少なくとも過ごすために必要がどのくらいのお金を知りたいのために
入力
入力二つの整数の最初のライン N と L (1≤。 N 30≤; 1≤ L 10≤ 9) -ワインの代表と総数Nは、購入する必要があります
第二の入力ライン Nの整数S C 1、 C 2、···、 C N (1≤。 C iが 10≤ 9) -私はワインを必要金額を表します
出力
整数出力は、少なくとも彼は、L mlのを買って、お金の最低額を費やし
例
4 12
20 30 70 90
150
3 4
10000 1000 100 10
10
3 4
10 100 1000 10000
30
5 787787787
123456789 234567890 345678901 456789012 987654321
44981600785557577
注意
最初の例では、2つの2ミリリットルを購入する60元を費やし、8ミリリットルを購入する90元を費やす必要があります。あなたは限り150元として12ミリリットルの合計を取得します。
2番目の例では、あなただけの3ミリリットルが、10元を必要とする場合でも、いくつかの安価な8ミリリットルを購入します。
第3の例では、好ましくは10元後3 1 mlです。
ソリューション:最高価格のアイテムを購入する1最初の費用対効果の順序に従って、優先順位、最大を買います。
合計で費やされた現在のお金を記録し、後で使用するためにログファイルには、LがかかりLに等しい最小値よりも大きいANS。
書式#include <iostreamの> の#include <cstdioを> する#include <アルゴリズム> 使用して 名前空間はstdを、 typedefの長い 長いLL。 CONST LL INF = 9223372036854775807 - 1 。 // 9223372036854775807 LONGLONG的最大值 のconst int型の N = 40 ; 構造体STU { LLの価格。 LL V; BOOLフレンド演算子 <(CONST STU&X、CONST STU&Y){ 戻り x.price * YV <y.price * XV。 } } [N]をARR。 INT のmain(){ int型nは、必要。 CIN >> N >> 必要があります。 以下のために(int型 i = 1 ; iが<= N; iが++ ){ scanf関数(" %のD "、およびARR [I] .price)。 ARR [I] .V = 1 <<(I- 1 )。 } ソート(ARR + 1、ARR + 1 + N)。 LLのres =が必要です。 LL L = 1 。 LL合計 = 0 ; LL ANS =INF; 一方(RES> 0 && L <= N-){ SUM + = RES / ARR [L] .V * ARR [L] .price; // 最大購入RESの時間/ ARR [L] .V RES = RES ARR%の[1] .V; // RES番号Lドリンクを購入され、どのくらいの必要性から悪い。 IF(RES == 0)ANS =分(ANSは、SUM); //はわずか約現在予約を買います状態 他の ANS =分(ANS、ARR SUM + [L] .price); // !のres = 0なら、それは購入価格がよりARR + SUM [L] .priceであり; L ++ ; } のprintf(" LLD%\ N- " 、ANS)は、 返す 0 ; }