問題
C – 節制
回答
全探索を書いたつもりでしたが、 満腹度が0以下を切り捨てる処理で、40点取れてしまいました。
N, H = map(int, input().split())
A, B, C, D, E = map(int, input().split())
ordinary_meal = (A, B)
cheap_meal = (C, D)
no_meal = (0, -E)
meals = (ordinary_meal, cheap_meal, no_meal)
conditions = [[0, H]]
results = []
results.append(conditions)
for i in range(N):
conditions = results[i]
tmp = []
for condition in conditions:
for meal in meals:
new_condition = [condition[0] + meal[0], condition[1] + meal[1]]
if new_condition[1] <= 0:
continue
if new_condition not in tmp:
tmp.append(new_condition)
results.append(tmp)
ans = float('inf')
for cost, hungry in results[N]:
ans = min(ans, cost)
print(ans)