DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Minimum Perimeter Triangle

返回题目

题解

점들을 xxx좌표 순서로 정렬하고 분할 정복을 적용한다.

현재 점 집합을 왼쪽 절반과 오른쪽 절반으로 나눈 뒤, 각 절반에서 최소 둘레를 재귀적으로 구한다. 두 값의 최솟값을 δ\deltaδ라 하자. 이제 양쪽 절반의 점을 모두 사용하는 삼각형 중 둘레가 δ\deltaδ보다 작은 것이 있는지만 확인하면 된다.

둘레가 δ\deltaδ보다 작은 삼각형의 모든 변의 길이는 δ2\frac{\delta}{2}2δ​보다 작다. 한 변의 길이를 aaa, 나머지 두 변의 길이를 b,cb,cb,c라 하면 세 점이 한 직선 위에 있지 않으므로

a<b+ca<b+ca<b+c

이고, 따라서

2a<a+b+c<δ2a<a+b+c<\delta2a<a+b+c<δ

이다.

양쪽 절반의 점을 모두 사용하는 삼각형을 생각하자. 서로 다른 절반에 속한 두 꼭짓점의 거리가 δ2\frac{\delta}{2}2δ​보다 작으므로, 세 꼭짓점은 모두 분할선으로부터 수평 거리 δ2\frac{\delta}{2}2δ​ 미만인 띠 안에 있다. 또한 모든 변의 길이가 보다 작으므로 세 꼭짓점의 좌표 범위도 보다 작다.

따라서 분할선 주변의 띠에 속한 점들을 yyy좌표 순서로 정렬하고, yyy좌표 차이가 δ2\frac{\delta}{2}2δ​보다 작은 점들끼리만 확인하면 된다.

이 범위에 들어오는 점의 개수는 상수이다. 띠 안에서 높이가 δ2\frac{\delta}{2}2δ​인 임의의 수평 구간을 생각한다. 분할선의 왼쪽과 오른쪽은 각각 너비와 높이가 모두 δ2\frac{\delta}{2}2δ​ 이하인 직사각형이다.

각 직사각형을 가로로 222등분하고 세로로 333등분한다. 작은 직사각형 하나의 너비는 δ4\frac{\delta}{4}4δ​, 높이는 δ6\frac{\delta}{6}이므로 대각선 길이는

(δ4)2+(δ6)2=1312δ\sqrt{\left(\frac{\delta}{4}\right)^2+\left(\frac{\delta}{6}\right)^2} = \frac{\sqrt{13}}{12}\delta(4δ​)2+

이다.

같은 작은 직사각형 안에 같은 재귀 절반에 속하는 점이 세 개 있다면, 그 세 점으로 만든 삼각형의 둘레는

3⋅1312δ=134δ<δ3\cdot\frac{\sqrt{13}}{12}\delta = \frac{\sqrt{13}}4\delta <\delta3⋅1213​​

이다. 이는 해당 재귀 절반에서 구한 최소 둘레가 δ\deltaδ 이상이라는 사실에 모순이다.

따라서 작은 직사각형마다 점은 최대 두 개이다. 한쪽에는 작은 직사각형이 666개 있으므로 최대 121212개, 양쪽을 합치면 최대 242424개의 점만 존재한다.

결국 띠의 점들을 yyy좌표 순서로 보면서, 각 점 뒤의 상수 개 점으로 만들 수 있는 모든 삼각형을 확인하면 된다. 세 점이 모두 같은 재귀 절반에 속하면 이미 재귀 호출에서 확인했으므로 생략한다.

구현에서는 둘레를 직접 계산하기 전에 세 변의 제곱거리가 모두 (δ2)2\left(\frac{\delta}{2}\right)^2(2δ​)2보다 작은지 먼저 검사한다. 이 조건을 통과한 경우에만 제곱근을 계산하면 상수를 크게 줄일 수 있다.

각 재귀 단계에서 두 절반의 yyy좌표 정렬 결과를 선형 시간에 병합한다. 따라서 전체 시간 복잡도는

O(Nlog⁡N)O(N\log N)O(NlogN)

이고, 공간 복잡도는 O(N)O(N)O(N)이다.

Solution written by GPT5.6

δ2\frac{\delta}{2}2δ​
yyy
δ2\frac{\delta}{2}2δ​
6δ​
(6δ​)2
​
=
1213​​δ
δ
=
413​​δ<
δ