[20250424] BOJ / D5 / 금광 / 신희을 #319
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🧷 문제 링크
https://www.acmicpc.net/problem/10167
🧭 풀이 시간
120+ 분
👀 체감 난이도
✏️ 문제 설명
황금의 땅이라는 별명을 가진 나라가 있다. 이 나라에는 개발 되지 않은 많은 금광들이 존재한다. 이 금광들을 지도상에 표시할 때, 평면상의 점들로 표현한다.
각 점 pi에는 양수 또는 음수의 정수 값 wi가 주어진다. 이 wi는 금광을 개발한다면 얻게 되는 이익 또는 손해를 나타낸다. wi가 양수이면, wi만큼의 이익이 발생함을 나타낸다. wi가 음수이면, |wi| 만큼의 손해가 발생함을 나타낸다.
금광 개발업자는 x축 또는 y축과 평행한 변들을 가진 직사각형 모양의 땅 R을 사서 R에 포함된 금광들을 모두 개발할 것이다. 이때 금광들을 개발하여 얻게 되는 개발 이익은 금광들의 wi들의 합이다.
개발업자는 R에 포함된 금광들의 개발 이익이 최대가 되는 직사각형 영역 R을 찾을 것이다. 예를 들어서, 위의 그림-1에서 개발 이익이 최대가 되는 영역 R은 그림-2에서 보여 지는 것과 같고 개발 이익은 7이다.
금광들의 좌표와 금광을 개발하면 얻게 되는 이익 또는 손해가 주어질 때, 직사각형 모양의 땅을 사서 얻게 되는 최대 개발 이익을 출력하는 프로그램을 작성하시오.
🔍 풀이 방법
x좌표를 기준으로 정렬 후, 세그먼트 트리 리프 노드의 인덱스를 매긴다. (x좌표가 같다면 같은 인덱스를 부여한다)
다시 y좌표 기준으로 정렬 후,
바닥부터 꼭대기까지 올라가면서 update 한 후, 전 범위 연속합 최대를 구해주고
바닥을 제외한 y좌표부터 꼭대기까지 올라가면서 update 한 후, 전 범위 연속합 최대를 구해주고
다시 그 다음 y좌표부터 꼭대기까지 올라가면서 update 한 후, 전 범위 연속합 최대를 구해주고...
이 모든 값의 max를 구하면 정답!
(연속합 최대를 구할 때는 금광 세그먼트 트릭을 활용해 연속합을 구한다.)
⏳ 회고
나. 드디어 다이아 오너.