[Python] ABC013 C

問題 C - 節制 回答 全探索を書いたつもりでしたが、 満腹度が0以下を切り捨てる処理で、40点取れてしまいました。 N, H = map(int, input().split()) A, B, C, D, E = map(int, input().s...

問題

C – 節制

回答

100点回答

解説を見ると全く難しくないんだが、問題を見て日に沿ってループと決めてかかってしまう視野の狭い自分には解けなかった。

解説のスライドp18以後、分かりやすいです。

N, H = map(int, input().split())
A, B, C, D, E = map(int, input().split())

ans = float('inf')
for i in range(N+1):
    for j in range(N+1):
        hungry = H + B*i + D*j - (N-i-j)*E
        if hungry > 0:
            cost = A*i + C*j
            ans = min(ans, cost)

print(ans)

101点回答

N, H = map(int, input().split())
A, B, C, D, E = map(int, input().split())

ans = float('inf')
for i in range(N+1):
    j = ((N - i)*E - H - B*i) // (D + E) + 1
    if j < 0:
        j = 0
    if (H + B*i + D*j - (N-i-j)*E) > 0:
        cost = A*i + C*j
        ans = min(ans, cost)

print(ans)