只沿走廊观察,可以把所有位置依次排成 A1−B1−A2−B2−⋯−A100−B100A_1-B_1-A_2-B_2-\cdots-A_{100}-B_{100}A1−B1−A2−B2−⋯−A100−B100。
相邻位置之间走一条走廊,代价为 xxx;在同一栋楼通过楼梯移动一层,相当于在这条序列上跨过两个位置,代价为 yyy,而跨两个位置也可以用两条走廊完成,所以其最优代价为 min(y,2x)\min(y,2x)min(y,2x)。
起点 AaA_aAa 与终点 BbB_bBb 在序列中的距离为 d=∣2b+1−2a∣d=|2b+1-2a|d=∣2b+1−2a∣,它一定是奇数。先走 ⌊d/2⌋\lfloor d/2\rfloor⌊d/2⌋ 次最优的“两格移动”,最后再走一条走廊,答案为 ⌊d/2⌋min(y,2x)+x\lfloor d/2\rfloor\min(y,2x)+x⌊d/2⌋min(y,2x)+x。
时间复杂度和额外空间复杂度均为 O(1)O(1)O(1)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户