Hanbit the Developer

[Python] 백준 2568번: 전깃줄 - 2 본문

Algorithm/백준

[Python] 백준 2568번: 전깃줄 - 2

hanbikan 2021. 8. 25. 11:49

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

 

2568번: 전깃줄 - 2

첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100,000 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결

www.acmicpc.net

 

먼저, 예시 입력 1의 전깃줄을 정렬하면 다음과 같다.

1 8

2 2

3 9

4 1

6 4

7 6

9 7

10 10

 

여기서 전깃줄이 안 꼬인다는 것은, 계속해서 값이 커져야만 한다. 즉, 가장 긴 증가하는 부분 수열을 구한다.

O(NlogN)으로 가장 긴 증가하는 부분 수열을 구하는 것은 아래 링크에 설명되어있다.

 

https://rccode.tistory.com/entry/14003

 

[Python] 백준 14003번: 가장 긴 증가하는 부분 수열 5

https://www.acmicpc.net/problem/14003 14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,00..

rccode.tistory.com

 

아무튼, 이러한 생각을 하게 되어 LIS를 쓰기만 하면 이 문제는 맞게 된다. 단, 우리가 구한 LIS는 꼬이지 않는 전깃줄에 대한 것이므로, 출력할 때 이것의 차집합을 해주면 된다.