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

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

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

교차로 잇기

返回题目

题解

도로 하나는 서로 다른 두 교차로를 사용하므로, 만들 수 있는 도로의 개수는 항상 ⌊N2⌋\left\lfloor \frac{N}{2} \right\rfloor⌊2N​⌋개 이하이다.

이제 이 개수를 항상 만들 수 있음을 보이면 된다. 모든 교차로를 xxx좌표가 증가하는 순서로 정렬하고, 앞에서부터 두 개씩 묶어 (1,2),(3,4),…(1,2),(3,4),\ldots(1,2),(3,4),…에 해당하는 교차로 쌍을 연결하자. 서로 다른 두 도로가 사용하는 xxx좌표 구간은 서로 겹치지 않는다. 따라서 두 도로는 중간에서 교차하지 않는다. 또한 각 교차로는 최대 한 번만 사용된다.

그러므로 정답은 ⌊N2⌋\left\lfloor \frac{N}{2} \right\rfloor⌊2N​⌋이다. 실제 프로그램은 좌표를 모두 입력받은 뒤 ⌊N/2⌋\lfloor N/2 \rfloor⌊N/2⌋만 출력하면 된다.

시간 복잡도는 O(N)O(N)O(N)이고, 메모리 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT5.5