Python


コード行3321問題リンク
🐒 最高のピザ
vega先生はmissピザ屋の常連です.
彼は今月から節約生活を始めた.
そのため、彼はピザ屋で1ドル当たり最もカロリーの高いピザを注文したいと思っています.
私たちはこのピザを「最高のピザ」と呼ぶことにした.
「最高のピザ」は一種ではない.
missピザはN種の具から自由に複数選択でき、上図で注文できます.
同じ具は2つを超えてはいけません.
料理が出ていないピザを注文することもできます.
度の価格はAドルで、トピョンの価格はすべてBドルです.
実際のピザの価格は闘牛士の価格と託送価格の合計です.
つまり、k種(0⊥k⊥N)を加えたピザの価格はA+k× B元です.
ピザ全体のカロリーは、カロリーとトビンのカロリーの合計を助けることです.
ヘルプの価格とゲートの価格、およびゲートと各ゲートの熱値を指定したときに、「最高のピザ」の1ドル当たりの熱数を求めるプログラムを作成します.

  • 最初の行には、マッピングタイプ数を表す整数N(1≦N≦100)が入力される.
    2行目には、2つの整数A、B(1≦A≦1000、1≦B≦1000)をスペース区切り記号として入力します.Aは道の価格を表し、Bはトピョンの価格を表す.
    3行目に整数C(1≦C≦10000)を入力し、刃先のカロリーを表す.
    3+i行(1≦i≦N)整数Di(1≦Di≦10000)を入力し、iの1番目の配合カロリー数を表す.

  • 「最高のピザ」は1ドル当たり熱量の小数点以下を捨て、整数で出力します.
  • 入力例
    3
    12 2
    200
    50
    300
    100
    出力例
    37
    
    私の草
    n = int(input())
    a,b = map(int,input().split())
    c = int(input())
    
    tplist = [0]
    for _ in range(n):
        toping = int(input())
        tplist.append(toping)
    
    
    caloriesum = sum(tplist) + c
    tplist.sort()
    
    pricesum = b*n +a
    cdlist = [c//a, (caloriesum) //(pricesum)]
    for i in range(1,n+1):
        caloriesum -= tplist[i]
        cdlist.append((caloriesum) // (pricesum - i*b)) 
    
    print(max(cdlist))
    これは58分かけて解決したグリンディ問題です.
    実施に時間がかかった.
    VSコードデバッガはいろいろ助けられました...
    アイデア:具の種類によって、価格は同じです.
    そこで、低カロリーの具から取り除き、すべてのピザの1ドルあたりのカロリーから高い値を選びます.