728x90
반응형
1365번: 꼬인 전깃줄
문제
https://www.acmicpc.net/problem/1365
1365번: 꼬인 전깃줄
첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가
www.acmicpc.net
풀이
가장 긴 증가하는 부분 수열(LIS)을 구하는 문제다. 전깃줄 문제와 같아 보이나 정렬할 필요가 없는 문제다. 왼쪽 전봇대의 위에서부터 차례대로 어디에 연결되어 있는지 주어지므로 순서대로 LIS를 구하면 된다. N의 범위가 10^5 이므로 시간복잡도가 O(NlogN)인 알고리즘으로 풀어야 시간초과가 안 난다. O(NlogN)으로 LIS를 구하는 방법은 아래 링크에 설명되어 있다.
[12015번 가장 긴 증가하는 부분 수열 2 문제] | [12015번 가장 긴 증가하는 부분 수열 2 풀이]
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, x;
cin >> n >> x;
vector<int> v{x};
for (int i = 1; i < n; i++) {
cin >> x;
if (v.back() < x)
v.push_back(x);
else
*lower_bound(v.begin(), v.end(), x) = x;
}
cout << n - v.size() << '\n';
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 9370 미확인 도착지 (0) | 2023.03.14 |
---|---|
[백준 / BOJ] C++ 27868 On My Way Dorm (0) | 2023.03.13 |
[백준 / BOJ] C++ 11003 최솟값 찾기 (0) | 2023.03.13 |
[백준 / BOJ] C++ 27724 팝핀 소다 (0) | 2023.03.12 |
[백준 / BOJ] C++ 27737 버섯 농장 (0) | 2023.03.12 |