티스토리 뷰

https://www.acmicpc.net/problem/9465



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
#include <iostream>
#include <algorithm>
using namespace std;
 
long long sticker[100001][2];
long long dp[100001][3];
//[열][] 0 : 뜯지 않음 1 : 1열 뜯음  2 : 2열 뜯음
 
 
int  main()
{
    int test;
    int n;
    cin >> test;
    long long input;
    while (test--) {
        cin >> n;
        for (int i = 1; i <= n; i++) {
            cin >> sticker[i][0];
        }
        for (int i = 1; i <= n; i++) {
            cin >> sticker[i][1];
        }
        dp[0][0= dp[0][1= dp[0][2= 0;
 
        for (int i = 1; i <= n; i++) {
            dp[i][0= max(dp[i - 1][0], max(dp[i - 1][1], dp[i - 1][2]));
            dp[i][1= max(dp[i - 1][0], dp[i - 1][2]) + sticker[i][0];
            dp[i][2= max(dp[i - 1][0], dp[i - 1][1]) + sticker[i][1];
        }
 
        long long ans = 0;
        for (int i = 1; i <= n; i++) {
            ans = max(max(ans, dp[i][0]), max(dp[i][1], dp[i][2]));
        }
        cout << ans<<endl;
    }
}
cs


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

BOJ11053 가장 긴 부분 수열(다시보기)  (0) 2017.06.26
BOJ)2156 포도주 시식  (0) 2017.06.22
BOJ)2193 이친수  (0) 2017.06.22
BOJ)11057 오르막수(다시보기)  (0) 2017.06.21
BOJ)10844 쉬운 계단 수(다시보기)  (0) 2017.06.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함