본문 바로가기
알고리즘/DP

9465 스티커

by tryotto 2019. 2. 7.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <algorithm>
 
using namespace std;
 
int arr[2][110000= { 0 };
int dp[2][110000= { 0 };
 
int main() {
    int t,n;
    scanf("%d"&t);
    getchar();
 
    for (int k = 0; k < t; k++) {        
        scanf("%d"&n);
        getchar();
 
        for (int i = 1; i <= 2; i++) {
            for (int j = 1; j <= n; j++) {
                scanf("%d"&arr[i][j]);
            }
        }
 
        for (int i = 1; i <= 2; i++) {
            for (int j = 1; j <= 2; j++) {
                dp[i][j] = arr[i][j];
            }
        }
        dp[1][2+= dp[2][1];
        dp[2][2+= dp[1][1];
        
        for (int j = 3; j <= n; j++) {
            dp[1][j] = max(dp[2][j - 1], dp[2][j - 2]) + arr[1][j];
            dp[2][j] = max(dp[1][j - 1], dp[1][j - 2]) + arr[2][j];
        }
 
        int result = max(dp[1][n], dp[2][n]);
        printf("%d\n", result);        
    }
}
cs


'알고리즘 > DP' 카테고리의 다른 글

1932 정수삼각형 (숫자 삼각형 더블릿)  (0) 2019.02.07
1010 다리놓기  (0) 2019.02.07
11727 타일(2)  (0) 2019.02.07
11726 타일(1)  (0) 2019.02.07
2163 초콜릿 자르기  (0) 2019.02.07