Study hard
(c++)백준 14501번: 퇴사 본문
14501번: 퇴사
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
www.acmicpc.net
[풀이]
DP로 풀 수 있는 문제였다.
DP[i]: i번째 날 상담하면 그 이후부터 최대로 받을 수 있는 이익
상담이 끝나는 날이 N+1보다 커지면 무시한다.
#include <iostream>
#include <algorithm>//max
using namespace std;
int N;
int T[16];
int P[16];
int DP[16] = { 0, };
void solution() {
int ans = 0;
for (int i = N; i >= 1; i--) {
//상담이 끝나는 날이 N+1보다 크면
if (i + T[i] > N + 1)
continue;
else {
int Max = 0;
for (int j = i + T[i]; j <= N; j++) {
Max = max(Max, DP[j]);
}
DP[i] = P[i] + Max;
ans = max(ans, DP[i]);
}
}
cout << ans << '\n';
}
int main() {
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> T[i] >> P[i];
}
solution();
return 0;
}
'백준 > DP' 카테고리의 다른 글
(c++)백준 10942번: 팰린드롬? (0) | 2020.09.14 |
---|---|
(c++)백준 15486번: 퇴사 2 (0) | 2020.09.14 |
(c++)백준 11060번: 점프 점프 (0) | 2020.09.13 |
(c++)백준 11048번: 이동하기 (0) | 2020.09.13 |
(c++)백준 11052번: 카드 구매하기 (0) | 2020.06.10 |