관리 메뉴

너와 나의 스토리

(BOJ) 14863 서울에서 경산까지 본문

Algorithm/Dynamic Programming

(BOJ) 14863 서울에서 경산까지

노는게제일좋아! 2019. 7. 16. 16:57
반응형

문제: https://www.acmicpc.net/problem/14863

 

 

문제 풀이:

dp[현재 도시][현재까지 걸린 시간] = dp[이전 도시][이전 도시까지 걸린시간]+모금액

진전 도시까지 도달하는데 걸린 시간들을 기준으로 다음 도시까지 걸리는 시간과 모금액을 쌓아가며 저장한다.

 

 

 

소스 코드:

int  n,k;
int dp[100][100001];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL), cout.tie(NULL);

	cin >> n >> k;
	for (int i = 0; i < n; i++) {
		int q, w, e,r;
		cin >> q >> w >> e >> r;
		if (i == 0) {
			dp[0][q] = w;
			dp[0][e] = max(dp[0][e], r);
		}
		else {
			for (int j = 0; j <= k; j++) {
				if (!dp[i-1][j]) continue;
				if (j + q <= k) dp[i][j + q] = max(dp[i][j+q],dp[i - 1][j] + w);
				if (j + e <= k) dp[i][j + e] = max(dp[i][j + e], dp[i - 1][j] + r);
			}
		}
	}
	int res = 0;
	for (int i = 0; i <= k; i++) res=res < dp[n - 1][i] ? dp[n - 1][i] : res;


	cout << res << '\n';
	return 0;
}

 

반응형

'Algorithm > Dynamic Programming' 카테고리의 다른 글

[BOJ] 2225 합분해  (0) 2020.05.04
[BOJ] 2579 계단 오르기  (0) 2020.03.25
(BOJ) 14697 방 배정하기  (0) 2019.07.16
(BOJ) 1890 점프  (0) 2019.05.21
(BOJ) 11722 가장 긴 감소하는 부분 수열 - O(NlogN) 구현  (1) 2019.05.21
Comments