λ¬Έμ
μλ΄μμΌλ‘ μΌνκ³ μλ λ°±μ€μ΄λ ν΄μ¬λ₯Ό νλ €κ³ νλ€.
μ€λλΆν° N+1μΌμ§Έ λλ λ ν΄μ¬λ₯Ό νκΈ° μν΄μ, λ¨μ NμΌ λμ μ΅λν λ§μ μλ΄μ νλ €κ³ νλ€.
λ°±μ€μ΄λ λΉμμκ² μ΅λν λ§μ μλ΄μ μ‘μΌλΌκ³ λΆνμ νκ³ , λΉμλ ν루μ νλμ© μλ‘ λ€λ₯Έ μ¬λμ μλ΄μ μ‘μλμλ€.
κ°κ°μ μλ΄μ μλ΄μ μλ£νλλ° κ±Έλ¦¬λ κΈ°κ° Tiμ μλ΄μ νμ λ λ°μ μ μλ κΈμ‘ Piλ‘ μ΄λ£¨μ΄μ Έ μλ€.
N = 7μΈ κ²½μ°μ λ€μκ³Ό κ°μ μλ΄ μΌμ νλ₯Ό 보μ.
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
Ti | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
Pi | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
1μΌμ μ‘νμλ μλ΄μ μ΄ 3μΌμ΄ 걸리며, μλ΄νμ λ λ°μ μ μλ κΈμ‘μ 10μ΄λ€. 5μΌμ μ‘νμλ μλ΄μ μ΄ 2μΌμ΄ 걸리며, λ°μ μ μλ κΈμ‘μ 15μ΄λ€.
μλ΄μ νλλ° νμν κΈ°κ°μ 1μΌλ³΄λ€ ν΄ μ μκΈ° λλ¬Έμ, λͺ¨λ μλ΄μ ν μλ μλ€. μλ₯Ό λ€μ΄μ 1μΌμ μλ΄μ νκ² λλ©΄, 2μΌ, 3μΌμ μλ μλ΄μ ν μ μκ² λλ€. 2μΌμ μλ μλ΄μ νκ² λλ©΄, 3, 4, 5, 6μΌμ μ‘νμλ μλ΄μ ν μ μλ€.
λν, N+1μΌμ§Έμλ νμ¬μ μκΈ° λλ¬Έμ, 6, 7μΌμ μλ μλ΄μ ν μ μλ€.
ν΄μ¬ μ μ ν μ μλ μλ΄μ μ΅λ μ΄μ΅μ 1μΌ, 4μΌ, 5μΌμ μλ μλ΄μ νλ κ²μ΄λ©°, μ΄λμ μ΄μ΅μ 10+20+15=45μ΄λ€.
μλ΄μ μ μ ν νμ λ, λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μμ΅μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
ν΄μ¬
첫째 μ€μ N (1 ≤ N ≤ 15)μ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° Nκ°μ μ€μ Tiμ Piκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄μ μ£Όμ΄μ§λ©°, 1μΌλΆν° NμΌκΉμ§ μμλλ‘ μ£Όμ΄μ§λ€. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)
ν΄μ¬2
첫째 μ€μ N (1 ≤ N ≤ 1,500,000)μ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° Nκ°μ μ€μ Tiμ Piκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄μ μ£Όμ΄μ§λ©°, 1μΌλΆν° NμΌκΉμ§ μμλλ‘ μ£Όμ΄μ§λ€. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000)
μΆλ ₯
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
μμ μ λ ₯ 1 볡μ¬
7
3 10
5 20
1 10
1 20
2 15
4 40
2 200
μμ μΆλ ₯ 1 볡μ¬
45
μμ μ λ ₯ 2 볡μ¬
10
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
μμ μΆλ ₯ 2 볡μ¬
55
μμ μ λ ₯ 3 볡μ¬
10
5 10
5 9
5 8
5 7
5 6
5 10
5 9
5 8
5 7
5 6
μμ μΆλ ₯ 3 볡μ¬
20
μμ μ λ ₯ 4 볡μ¬
10
5 50
4 40
3 30
2 20
1 10
1 10
2 20
3 30
4 40
5 50
μμ μΆλ ₯ 4 볡μ¬
90
νμ΄κ³Όμ
ν΄λΉ λ¬Έμ λ dpμκ³ λ¦¬μ¦μΌλ‘ λΆλ₯λμ΄μλ λ¬Έμ λ‘ μλ‘μ΄ μκ³ λ¦¬μ¦ κ°λ μ λμ μ ν΄μ νμ΄μΌ νλ λ¬Έμ μλ€.
λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ΄λ "νΉμ λ²μκΉμ§μ κ°μ ꡬνκΈ° μν΄μ κ·Έκ²κ³Ό λ€λ₯Έ λ²μκΉμ§μ κ°μ μ΄μ©νμ¬ ν¨μ¨μ μΌλ‘ κ°μ ꡬνλ μκ³ λ¦¬μ¦"
μ΄λΌκ³ λͺ μκ° λμ΄μλ μκ³ λ¦¬μ¦μ΄λ€.
μ¦ μμ κ°μ ν΄μ¬λ¬Έμ μ κ°μ ꡬν λ λͺ¨λ κ²½μ°μ μλ₯Ό λ€ λλ €λ³΄λ κ²μ΄ μλλΌ μ΄μ μ ꡬν΄λμλ λ€λ₯Έ κ°μ μ°Έμ‘°ν΄μ νμ¬μ κ°μ ꡬνλ μκ°λ¨μΆμ ν μ μλ μκ³ λ¦¬μ¦ λ°©λ²μ΄λΌκ³ μκ°νλ©΄ λλ€.
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
κΈ°κ° (Ti) | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
κΈμ‘ (Pi) | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
dp | 0 | 0 | 0 | X | 0 | 0 | 0 |
μμ λ¬Έμ μ dpλ₯Ό λμ νμ¬ μ€λͺ μ ν΄λ³΄μλ©΄ λ¬Έμ μμλ μ΅μ’ μ μΌλ‘ μ»μ μ μλ μ΅λμμ΅μ΄ λͺμΈκ°λ₯Ό μ€μν ν¬μΈνΈλ‘ μκ°νλ©΄ λλ€.
μ΅λμμ΅μ κ²°κ³Όμ μΌλ‘ κ°μ₯ λ§μ§λ§ λΆλΆμ€μ ν΄λΉμ΄ λκ² μ§λ§ dpλΌλ κ² μμ²΄κ° μ΅λμμ΅μ΄λΌλ κ°μ ꡬνκΈ° μν΄μ λ€λ₯Έ λ²μμ κ°κΉμ§ μ΄μ©νμ¬ νμ©νλ λ°©μμ μ΄μΌκΈ°νκΈ° λλ¬Έμ μ΅λμμ΅μ΄ λκΈ°κΉμ§μ μ κ³Όμ λ€μ΄ μ΄λ»κ² μ΄λ£¨μ΄μ Έ μλκ°λ₯Ό μ€μ μ μΌλ‘ λ΄μ κ°μ ꡬνλ λ°©μμ μ΄μΌκΈ°νλ€.
μμ νμμ μ΅λμμ΅μ΄ λλ κΈ°μ€μ΄ 10+20+15=45μ ν΄λΉμ΄ λλ κ°μ΄κΈ°λλ¬Έμ μ΄μ μ λ²μ΄λ€μ μμ΅μ κ³μ λν΄κ°λ©° κ³μ°μ΄ λλ νμμ΄λΌλ κ²μ λ³Ό μ μκ³ , μμ μλ νλ₯Ό κΈ°μ€μΌλ‘ μ΅μ’ μ μΈ μ΅λμμ΅λ§ μκ°νλ κ²μ΄ μλλΌ XλΌλ λ μ΄ μμΌλ©΄ κ·Έλ μ μ»μ μ μλ μ΅λ μμ΅μ λͺμΈκ°λΌκ³ λ°κΏ μκ°μ νμ¬ μ΄μ μ μλ κ°λ€μ μΈμ©ν΄μ νμ κ°μ κ³μ°νλ λ°©μμΌλ‘ μκ°νλ©΄ λλ€.
(dpμλ κ·Έλ λ²μ΄λ릴 μ μλ μ΅λ μμ΅μ΄ μ νλ€.)
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
κΈ°κ° (Ti) | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
κΈμ‘ (Pi) | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
dp | 0 | 0 | 0 | 10 | 0 | 0 | 0 |
1μΌμ°¨μ κ²½μ°μλ κΈ°κ°μ΄ 3μΌμ΄κΈ° λλ¬Έμ 10μ ν΄λΉνλ 보μλ 4μΌ μ°¨μ λ€μ΄μ€λ νμμ΄λΌκ³ μκ°μ ν μ μλ€. μ΄λ¬ν νμμΌλ‘ λͺ¨λ κ°λ€μ dpμ λ€ λ΄λ€ 보면
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
κΈ°κ° (Ti) | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
κΈμ‘ (Pi) | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
dp | 0 | 0 | 0 | 10 | 0 | 0 | 20 |
3μΌ μ°¨μλ κΈ°κ°μ΄ 1μ΄λΌμ 4μΌμ λ°λ‘ μμ΅μ΄ λ€μ΄μ€λ νμμΈλ° 4μΌ μ°¨μ μ΄λ―Έ ν΄λΉνλ μμΉμ κ°μ΄ μ νμμ΄μ κ°μ μ μ μ μλ μν©μ΄ λμ€κ² λλ€.
κ·Έλ° κ²½μ°μλ 1μΌμ°¨μ 3μΌ μ°¨κ° μλ‘ λ€λ₯Έ κ²½λ‘λ‘ 4μΌ μ°¨μ λλ¬μ ν κ²½μ°λΌμ 4μΌ μ°¨μ μ μ₯μμ 보면 λ μ€ μ΄λ ν κ°μ΄ μ νλ μ΄μ κ²°κ³Όμ λ°λΌμ μ΄λ―Έ λλ¬λμ΄ μ¨ κ°λ€μ΄κΈ° λλ¬Έμ 4μΌ μ°¨κ° λμκ°λ λ°μ μμ΄μλ μ ν μκ΄μ΄ μλ€λ κ²μ μ μ μλ€.
κ·Έλμ ν΄λΉ λ¬Έμ μμλ μ΅λ μμ΅μ ꡬνλ νμμΌλ‘ λ¬Έμ κ° μ£Όμ΄μ‘κΈ° λλ¬Έμ 4μΌμ°¨μ μ΄λ―Έ μ νμλ dpμ κ°κ³Ό μλ‘κ² λ€μ΄μ¬ κ°μ λΉκ΅ν΄μ λ ν° κ°μ μ μΌλ©΄ λλ λ°©μμ΄λ€. DP [4μΌ μ°¨] = max(DP [4μΌ μ°¨], N(μλ‘κ² λ€μ΄μ¬ κ°))
μμ κ²½μ°μλ 1μΌμ°¨μ κ°λ 10μ΄κ³ 3μΌ μ°¨μ κ°λ 10μ΄λ―λ‘ ν¬κ² μκ΄νμ§ μκ³ μ§ννκ² λλ€.
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
κΈ°κ° (Ti) | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
κΈμ‘ (Pi) | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
dp | 0 | 0 | 0 | 10 | 30 | 0 | 20 |
μμ κ°μ΄ 4μΌ μ°¨μ ν΄λΉνλ κ°μ 5μΌ μ°¨(κΈ°κ°μ΄ 1μ΄λ―λ‘)μ μ μ΄μΌ νλ κ²½μ°μλ κ³μ°νλ λ μ dpμ μ΄λ―Έ μ νμλ κ°μ κ·Έλλ‘ κ°μ§κ³
5μΌ μ°¨μ μ μΌλ©΄ λλ€. (4μΌ μ°¨ : 20 + dp : 10 = 30 )
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
κΈ°κ° (Ti) | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
κΈμ‘ (Pi) | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
dp | 0 | 0 | 0 | 10 | 30 | 0 | 45 |
μ΄λ¬ν νμμΌλ‘ κ³μ κ³μ°μ νλ€ λ³΄λ©΄ μ°λ¦¬κ° ꡬνμκ³ νλ μ΅λμμ΅μ κ°μ μ°Ύμ μ μλ κ²μ μ μ μλ€.
μ΄λ¬ν νμμΌλ‘ μ κ°κ° λλ€κ³ μκ°μ νλ©΄ λλ€.
μΆκ°μ μΈ λ°λ‘λ‘λ μμ νμμΌλ‘λ 6μΌ μ°¨μ dp(μ΅λμμ΅)μ΄ 0μΌλ‘ μ νμμ§λ§ 5μΌμ°¨μ μμ΅μ΄ 30μ΄λ―λ‘
6μΌμ°¨μ μΌμ μμ μ νλ€κ³ ν΄λ 6μΌ μ°¨μ μμ΅μ μ΄μ μ μ΅λ μμ΅κ°μ κ°μ ΈμΌ νλ€.
κ·Έλμ μ§νμ ν΄κ°λ©΄μ dpμ κ°μ΄ λΉμμ Έ μλ€λ©΄ μ±μ λ£μ΄μ£Όλ μλ μΆκ°μ μΌλ‘ λ£μ΄μ€μΌ νλ€.
14501λ¬Έμ κ° 15486λ¬Έμ μ νμλ§ λκ°κ³ μ£Όμ΄μ§λ ν¬κΈ°λ§ λ€λ₯΄κΈ° λλ¬Έμ ν΄μ¬λ¬Έμ μ μ½λλ₯Ό dpνμμΌλ‘ ꡬμ±μ ν΄λμλ€λ©΄ ν΄μ¬2 λ¬Έμ λ λ°°μ΄κ°λ§ λ°κΏμ κ·Έλλ‘ ν μ μμλ€.
code
// 14501λ² - ν΄μ¬
#include <iostream>
#include <algorithm>
int main(void)
{
int n, max = -1;
int tp[16][2] = {0,}, dp[16] = {0,};
std::cin >> n;
for (int i = 0; i < n; i++)
std::cin >> tp[i][0] >> tp[i][1];
for (int i = 0; i <= n; i++) {
int deadline = i + tp[i][0];
if (max > dp[i]) dp[i] = max;
if (deadline <= n)
dp[deadline] = std::max(dp[deadline], tp[i][1] + dp[i]);
if (dp[i] > max) max = dp[i];
}
std::cout << max;
return (0);
}
// 15486λ² - ν΄μ¬ 2
#include <iostream>
#include <algorithm>
int main(void)
{
int n, max = -1;
int tp[1600000][2] = {0,}, dp[1600000] = {0,};
std::cin >> n;
for (int i = 0; i < n; i++)
std::cin >> tp[i][0] >> tp[i][1];
for (int i = 0; i <= n; i++) {
int deadline = i + tp[i][0];
if (max > dp[i]) dp[i] = max;
if (deadline <= n)
dp[deadline] = std::max(dp[deadline], tp[i][1] + dp[i]);
if (dp[i] > max) max = dp[i];
}
std::cout << max;
return (0);
}
νκΈ°
dpλΌλ κ°λ μ μ΄λ²μ μλ‘κ² λ€μ‘μλΌλ λλμΌλ‘ μκ³ λ¦¬μ¦μ λν΄μ 곡λΆλ₯Ό ν΄λ΄€μλλ° νμ€ν μ΄λ ΅λ€λ λλμ λ§μ΄ λ°μλ€.
μ½ν λ₯Ό 보거λ κΈ°λ³Έμ μΌλ‘ κ°μ₯ λ§μ΄ μ°μ΄λ μκ³ λ¦¬μ¦ μ€μ νλμ΄κΈ° λλ¬Έμ μ΅μν΄μ§ λκΉμ§ dpλ₯Ό κ³μ νμ΄λ΄μΌ ν κ±° κ°λ€.
'Algorithm > λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 9656λ² - λ κ²μ 2 (C++) (0) | 2023.07.11 |
---|---|
[λ°±μ€] 9655λ² - λ κ²μ (C++) (0) | 2023.07.11 |
[λ°±μ€] 1057λ² - ν λλ¨ΌνΈ (C++) (0) | 2023.07.09 |
[λ°±μ€] 1049λ² - κΈ°νμ€ (C++) (0) | 2023.07.08 |
[λ°±μ€] 7795λ² - λ¨Ήμ κ²μΈκ° λ¨Ήν κ²μΈκ° (C++) (0) | 2023.07.07 |