1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| def calcMinCost(costs, days): visited = [False] * 366
for day in days: visited[day] = True
dp = [0] * 366 dp[365] = costs[0] if visited[365] else 0 for i in range(364, 0, -1): if not visited[i]: dp[i] = dp[i + 1] continue
dp[i] = dp[i + 1] + costs[0] dp[i] = min(dp[i], dp[min(i + 3, 365)] + costs[1]) dp[i] = min(dp[i], dp[min(i + 7, 365)] + costs[2]) dp[i] = min(dp[i], dp[min(i + 30, 365)] + costs[3])
return dp[1]
if __name__ == "__main__": costs = list(map(int, input().split())) days = list(map(int, input().split())) min_cost = calcMinCost(costs, days)
print(min_cost)
|