일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 투포인터
- 누적합
- 그리디
- lis
- 이진탐색
- 백준
- 브루트포스
- DP
- 위상정렬
- 펜윅트리
- 에라토스테네스의 체
- 삼분탐색
- 플로이드와샬
- BFS
- DisjointSet
- 정렬
- 세그먼트트리
- 수학
- dfs
- boj
- lca
- 이분탐색
- 크루스칼
- MST
- 다익스트라
- LazyPropagation
- 좌표압축
- 비트마스크
- 구현
- 이분매칭
Archives
- Today
- Total
lastknight00
[백준] 민균이의 계략(11568) 본문
문제 링크 : [백준] 민균이의 계략(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)
해결 방법
- 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