Algorithm/Baekjoon
[BOJ 22871] μ§κ²λ€λ¦¬ 건λκΈ° (large)
sun_young
2024. 3. 17. 01:20
π λ¬Έμ
https://www.acmicpc.net/problem/22871
π» μ½λ
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
int N;
long long bridge[1000001];
long long dp[1000001] = { 0 };
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> N;
for (int i = 0; i < N; i++) cin >> bridge[i];
for (int i = 1; i < N; i++) dp[i] = 987654321; // μ΅μκ°μ ꡬν΄μΌ νκΈ° λλ¬Έμ μ΅λν ν° μλ‘ μ΄κΈ°ν
for (int i = 1; i < N; i++) {
for (int j = 0; j < i; j++) {
dp[i] = min(dp[i], max(dp[j], (i - j) * (1 + abs(bridge[j] - bridge[i]))));
}
}
cout << dp[N - 1] << '\n';
}
λ©λͺ¨λ¦¬ λ° μκ°
π‘ νμ΄
- μ λ ₯λ°μ λ°μ΄ν° μ μ₯
- μ νμ
- max(dp[j], (i - j) * (1 + abs(bridge[j] - bridge[i]))));
- dp[j] : jκΉμ§ μ΄λνλλ° λ°μν ν
- (i - j) * (1 + abs(bridge[j] - bridge[i]))) : iλ²μ§Έ λλ‘ μ΄λν λ λ°μνλ ν κ³μ°
- max ν¨μ μ¬μ© μ΄μ : λ¬Έμ μμ "λμ νλ² κ±΄λκ° λλ§λ€ μΈ μ μλ νμ μ΅λ Kμ΄λ€." → νμ μνμ ꡬνκΈ°
- min(dp[j], ~)
- min ν¨μ μ¬μ© μ΄μ : Kμ μ΅μκ°μ ꡬν΄μΌ νλ€
- forλ¬Έ μ΄μ©ν΄μ λ°λ³΅