lastknight00

[백준] 민균이의 계략(11568) 본문

PS

[백준] 민균이의 계략(11568)

lastknight00 2020. 6. 2. 22:26

문제 링크 : [백준] 민균이의 계략(11568)

문제 설명

대놓고 LIS 구현문제입니다.

입력

N(행렬의 길이, 1<=N<=2,000)
Di(i번째 수열의 수, 1<= D1 <= 100,000,000)

5
8 9 1 2 10

출력

가장 긴 수열의 길이

3

카테고리

#DP #LIS

시간 복잡도 상한

O(N2logN)

해결 방법

  1. LIS를 구현합니다.

시간복잡도

O(NlogN)

코드

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,d;
vector<int>v;
int main(){
    scanf("%d",&n);
    while(n--){
        scanf("%d",&d);
        if(v.empty()||v.back()<d)v.push_back(d);
        else v[lower_bound(v.begin(),v.end(),d)-v.begin()]=d;
    }
    printf("%d",v.size());
}

'PS' 카테고리의 다른 글

[백준] 피자 굽기(1756)  (0) 2020.06.04
[백준] 소수 사이 수열(3896)  (0) 2020.06.03
[백준] 열차정렬(4198)  (0) 2020.06.02
[백준] 수조(2)(2130)  (0) 2020.06.01
[백준] 수조(1)(2130)  (0) 2020.06.01
Comments