洛谷P7745题解
#题解
2025-02-04
调了两个月终于调出来了。
首先看数据范围:
纯根据题意模拟的
这时候就需要预处理。
对于曼哈顿距离,我们可以把它想象成一个点到另一个点的最短路,这边放个图例来方便理解
如图,容易发现:
图上
一提到预处理,首先我们想到的是前缀和。
求数组前缀和的方式十分简单,仅需要写一个循环,例如下方代码:
1 |
|
在得到前缀和后,根据题意,容易得出每次移动对于每个控制点到ROBOT的距离
同样的,这边放一个 gif 来演示收到 “J” 指令是的操作情况。
(如果 gif 挂了请@或私信我)
举例当指令为 “S” 时:
1 |
|
在一系列例如上方的处理后,我们仅需要提前(在输入每个机器人坐标时)算出初始距离,并对这个初始距离进行加减即可。
写完后发现时间复杂度仅有
当然,此题也可以用 STL 中的 lower_bound 和 upper_bound 写。