-
가장 긴 바이토닉 부분 수열 - 11054Algorithm/BOJ 2020. 3. 1. 20:10123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//11054 - 가장 긴 바이토닉 부분 수열#include <iostream>using namespace std;int N;int arr[1000];int cache[1000];int cache2[1000];void init(){cin >> N;for (int i = 0; i < N; ++i){cache[i] = cache2[i] = -1;cin >> arr[i];}}int dp(int idx){int &ret = cache[idx];if (ret != -1)return ret;ret = 0;for (int i = idx + 1; i < N; ++i)if (arr[idx] > arr[i])ret = max(ret, dp(i));++ret;return ret;}int dp2(int idx){int &ret = cache2[idx];if (ret != -1)return ret;ret = 0;for (int i = idx - 1; i >= 0; --i)if (arr[idx] > arr[i])ret = max(ret, dp2(i));++ret;return ret;}int main(){init();int ans = 0;for (int i = 0; i < N; ++i)ans = max(ans, dp(i) + dp2(i) - 1);cout << ans;}
cs https://www.acmicpc.net/problem/11054
11054번: 가장 긴 바이토닉 부분 수열
첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000)
www.acmicpc.net
가장 긴 바이토닉 부분 수열
DP문제
dp(idx) : idx에서 시작해 우로 감소하는 부분수열중 가장 긴 것의 길이
dp2(idx) : idx에서 시작해 좌로 감소하는 부분수열중 가장 긴 것의 길이
dp(idx) + dp2(idx)중 가장 큰것이 정답입니다!
'Algorithm > BOJ' 카테고리의 다른 글
행렬 곱셈 순서 - 11049 (0) 2020.03.03 파일 합치기 - 11066 (0) 2020.03.02 가장 큰 정사각형 - 1915 (0) 2020.03.01 2225 - 합분해 (0) 2020.03.01 동전 2 - 2294 (0) 2020.03.01