-
[백준 1535] 안녕백준/DP 2024. 2. 17. 17:12
얘도 dp문제임
01 배낭문제인 평범한 배낭 이 문제랑 똑같은 상황임
얘도 가치있는거부터 넣는다고 좋은게 절대 아님
greedy로 안풀림
greedy로 풀었을때의 반례를 보자면
총 10 담을 수 있는데
8 8
5 5
4 4
이렇게 있으면 5 4 조합 넣는게 훨씬 이득임
하지만 greedy로 풀면 8에서 끝남
그래서 dp로 풀어야함
greedy가 안먹히기 때문

#include <iostream> #define SIZE 21 using namespace std; int N; int L[SIZE], J[SIZE]; int dp[SIZE][101]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N; for (int i = 1; i <= N; i++) cin >> L[i]; // 체력 for (int i = 1; i <= N; i++) cin >> J[i]; // 기쁨 for (int i = 1; i <= N; i++) { for (int HP = 1; HP <= 100; HP++) { // 인사할 수 있으면 if (HP - L[i] > 0) { dp[i][HP] = max(dp[i - 1][HP], dp[i - 1][HP - L[i]] + J[i]); } // 인사 못하면 else { dp[i][HP] = dp[i - 1][HP]; } } } cout << dp[N][100]; return 0; }'백준 > DP' 카테고리의 다른 글
[백준 13904] 과제 (0) 2024.04.11 [백준 1463] 1로 만들기 (1) 2024.02.18 [백준 12865] 평범한 배낭 (01 배낭문제) (0) 2024.02.17 [백준 2579] 계단 오르기 (0) 2024.02.08 [백준 1010] 다리놓기 (nCr문제) (1) 2024.02.07