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

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

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

Harvesting the Farm

返回题目

题解

모든 작물의 행과 열에서 최솟값과 최댓값을 각각 ymin⁡,ymax⁡,xmin⁡,xmax⁡y_{\min},y_{\max},x_{\min},x_{\max}ymin​,ymax​,xmin​,xmax​라 하자.

기계는 처음에 SrS_rSr​행만 차지한다. ymin⁡y_{\min}ymin​행과 ymax⁡y_{\max}y행의 작물을 모두 수확하려면 세로 구간에 , , 가 모두 포함되어야 한다. 따라서 확장은 최소 번 필요하다.

가로로는 xmin⁡x_{\min}xmin​열과 xmax⁡x_{\max}xmax​열을 모두 방문해야 한다. 둘 중 한 끝을 먼저 방문한 뒤 다른 끝으로 가는 두 순서 가운데 짧은 것을 택하면 된다. 최소 이동 횟수는

(xmax⁡−xmin⁡)+min⁡(∣Sc−xmin⁡∣,∣Sc−xmax⁡∣)(x_{\max}-x_{\min})+\min(|S_c-x_{\min}|,|S_c-x_{\max}|)(xmax​−xmin​

이다.

먼저 시작 열에서 필요한 모든 행까지 기계를 확장한다. 이어서 가까운 끝 열로 이동하고 다른 끝 열까지 이동한다. 이 과정에서 모든 작물의 행과 열을 지나므로 모든 작물을 수확한다. 따라서 두 하한을 동시에 달성할 수 있고, 정답은 두 값의 합이다.

서브태스크 1에서는 모든 작물이 시작 열에 있으므로 세로 확장만 고려한다. 서브태스크 2에서는 모든 작물이 시작 행에 있으므로 가로 이동만 고려한다. 서브태스크 3에서는 모든 작물이 시작 열 또는 그 오른쪽에 있으므로 가로 이동 횟수가 xmax⁡−Scx_{\max}-S_cxmax​−Sc​이다. 전체 서브태스크에서는 일반식을 사용한다.

각 케이스의 시간 복잡도는 O(N)O(N)O(N), 추가 공간 복잡도는 O(1)O(1)O(1)이다. 전체 시간 복잡도는 O(T+∑N)O(T+\sum N)O(T+∑N)이다.

Solution written by GPT5

max​
SrS_rSr​
ymin⁡y_{\min}ymin​
ymax⁡y_{\max}ymax​
max⁡(Sr,ymax⁡)−min⁡(Sr,ymin⁡)\max(S_r,y_{\max})-\min(S_r,y_{\min})max(Sr​,ymax​)−min(Sr​,ymin​)
)
+
min(∣Sc​−
xmin​∣,∣Sc​−
xmax​∣)