분할 정복 2

[c++] 백준 8985 수족관 2

백준 8985 수족관 2 8985번: 수족관 2 입력의 첫 줄은 수족관의 경계를 구성하는 꼭짓점의 개수 N (4 ≤ N ≤ 300,000)이 주어진다. N은 짝수이다. 수족관의 경계는 항상 꼭짓점 (0, 0)부터 시작한다. 그리고 마지막 꼭짓점은 (A, 0)의 형태로 www.acmicpc.net 문제를 만나고 나서 생각을 시작해 보면 금방 발견할 수 있는 것이 있다. 계산을 할 구간의 최소 높이가 존재하는 곳을 기준으로 부분 부분 나뉘어 각각의 연산을 다시 실행한다는 것 이러한 특징을 찾으면 바로 분할 정복임을 눈치챌 수 있을 것이다. 그러면 문뜩 머릿속에 그럼 물이 빠져나가는 시간은 어떻게 구하지? 가 떠오른다 분할된 구간에서 물은 얼만큼 빠져나가고 시간은 얼만큼 걸리는가. 분할됐을 때의 높이에서 분할..

문제 풀이 2023.06.15

[c++] 백준 6549 히스토그램에서 가장 큰 직사각형 (3가지 풀이)

https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 세그먼트 트리와 분할 정복, 스택으로 유명한 문제이다. 제일 간단한 풀이는 스택이며, 시간 복잡도도 O(n)으로 제일 빠르다. 분할정복은 세그먼트 트리를 사용하는 방법과 사용하지 않는 방법이 있는데, 이는 둘 다 O(nlogn)으로 속도는 스택 풀이보다는 느리다. 1. 스택 O(n) 스택에는 히스토그램의 인덱스를 저장한다. 히스토그램의 높이..

문제 풀이 2023.04.24