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

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

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

Drone

返回题目

题解

모든 요청에서 제한 시간은 최대 500500500이다. 이 값을 TTT라 하자.

먼저 모든 두 거점 u,vu,vu,v에 대해 한 번에 이동할 때의 시간 w(u,v)w(u,v)w(u,v)와 배터리 c(u,v)c(u,v)c(u,v)를 계산한다. 이후 각 출발점 sss에 대해 확장 그래프에서 최단 경로를 한 번 구한다. 확장 그래프의 정점은 (v,au)(v, au)(v,au)이며, 이는 총 이동 시간이 정확히 τ\tauτ인 상태에서 vvv번 거점에 도착해 있음을 의미한다. τ+w(u,v)≤T\tau+w(u,v) \leq Tτ+w(u,v)≤T이면 (u,au)(u, au)(u,au)에서 (v,au+w(u,v))(v, au+w(u,v))(v,au+w(u,v))로 가는 간선을 두고, 이 간선의 비용을 c(u,v)c(u,v)c(u,v)로 둔다.

모든 간선 비용은 음수가 아니므로, 출발 상태 (s,0)(s,0)(s,0)에서 다익스트라 알고리즘을 수행하면 각 상태까지의 최소 배터리 소모를 얻을 수 있다. 다익스트라가 끝난 뒤 각 도착점 vvv와 시간 제한 ttt에 대해

min⁡0≤τ≤tdist⁡(v,τ)\min_{0 \leq \tau \leq t} \operatorname{dist}(v,\tau)0≤τ≤tmin​dist(v,τ)

를 미리 저장한다. 그러면 각 요청은 O(1)O(1)O(1)에 답할 수 있다.

이 방법은 경로의 이동 시간만 상태에 추가한 것이다. 어떤 실제 경로도 확장 그래프에서는 같은 순서의 상태 이동으로 표현되며, 총 비용은 원래 경로의 소모 배터리와 같다. 반대로 확장 그래프의 모든 경로는 실제 거점 이동 경로에 대응한다. 따라서 확장 그래프에서 얻은 최단 비용은 주어진 시간 이하로 이동하는 실제 경로의 최소 소모 배터리와 같다.

상태 수는 N(T+1)N(T+1)N(T+1)이고, 한 상태에서 최대 NNN개의 이동을 시도한다. 각 출발점마다 다익스트라를 수행하므로 전체 시간 복잡도는 O(N⋅NT⋅Nlog⁡(NT))O(N \cdot NT \cdot N \log (NT))O(N⋅NT⋅, 즉 이다. 주어진 제한에서 충분하다. 저장 공간은 이다.

Solution written by GPT5.5

N
log
(
N
T
))
O(N3Tlog⁡(NT))O(N^3T\log(NT))O(N3Tlog(NT))
O(N2T)O(N^2T)O(N2T)