ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
μ μ΄λ μ μΉν΄μΌ νλ κ³ κ° μ Cλͺ κ³Ό λμμ κ°μ Nμ΄ μ£Όμ΄μ§λ€. μ΄λ κ° λμμλ ν보λΉμ©κ³Ό κ·Έ λΉμ©μΌλ‘ μ μΉν μ μλ κ³ κ°μ λν μ λ³΄κ° μ 곡λλ€. μ΄λ, μ΅μ λΉμ©μΌλ‘ μ μ΄λ Cλͺ μ κ³ κ°μ μλ₯Ό μ μΉνλ κ²½μ°λ₯Ό λ°ννλ λ¬Έμ μ΄λ€.
λ¬Έμ λ₯Ό νκΈ° μν΄μλ λ©λͺ¨μ΄μ μ΄μ μ ν΅ν΄, λ€μκ³Ό κ°μ΄ μ νμμ μΈμ°λ©΄ ν΄κ²°ν μ μλ€. `dp[Nλͺ μ κ³ κ°μ μ μΉνλλ° λλ λΉμ©] = min(dp[Nλͺ μ κ³ κ°μ μ μΉνλλ° λλ λΉμ©], dp[Nλͺ μ κ³ κ°μ μ μΉνλλ° λλ λΉμ© - νμ¬ λ°©λ¬Έν λμμ μ μΉ κ°λ₯ν μΈμμ) + cost)`
μ΄λ₯Ό λ€μ νμ΄μ μ€λͺ νλ€λ©΄, νμ¬ μ μΉ κ°λ₯ν κ³ κ°κ³Ό μ΄μ μ λ©λͺ¨μ΄μ μ΄μ μ ν΅ν΄ μ μΉν κ° μ€ μ΅μκ°μ μ°Ύμ λ€μ κΈ°λ‘νλ λ°©μμ μ·¨νλ λ°©μμ ν΅ν΄ μνλ κ°μ μ°Ύμ μ μλ€. λ¬Έμ λ₯Ό νΈλ λ° μμ΄ μ£Όμν μ μ μ΅μ΄μ μ μΆν λλ Cκ° 12μΈ κ²½μ° `dp[-1]`μ΄ λ΅μ΄ λλ―λ‘, λΉμ°ν κ·Έλ° μμΌλ‘ μκ°νκ³ μ μΆνμμ§λ§ μ€λ΅μ΄μλ€. μ΄λ, μ μ΄λ Cλͺ μ λλ €μΌ νκΈ°μ Cμ μ΅λκ°μ 100μ κ³ λ €νμ¬ DPλ₯Ό κ³μ°ν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ΄λ€.
μ½λ
from sys import stdin, maxsize
if __name__ == '__main__':
# ν보ν΄μΌν κ³ κ°, λμμ μ
C, N = map(int, stdin.readline().split())
# κ΄κ³ μ 보
ad = [list(map(int, stdin.readline().split())) for _ in range(N)]
# μ μ΄λ Cλͺ
μ λλ €μΌ νκΈ°μ, κ³ κ°μ μ μ΅λ κ°μ λν΄ μ€ νμκ° μμ
dp = [0] + [maxsize] * (C + 100)
for cost, customer in ad:
for cur_customer in range(customer, C + 101):
dp[cur_customer] = min(dp[cur_customer], dp[cur_customer - customer] + cost)
print(min(dp[C:C + 101]))
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 14567 μ μκ³Όλͺ©(Prerequisite) (0) | 2021.04.13 |
---|---|
λ°±μ€: 17485 μ§μ°μ λ¬ μ¬ν (Large) (0) | 2021.04.09 |
λ°±μ€: 20056 λ§λ²μ¬ μμ΄μ νμ΄μ΄λ³Ό (0) | 2021.04.05 |
λ°±μ€: 17135 μΊμ¬ λνμ€ (0) | 2021.04.04 |
λ°±μ€: 2186 λ¬Έμν (0) | 2021.04.02 |