杂题 I
P5471 [NOI2019] 弹跳
本题有简单的 KDT 优化建图做法,可以不建出边,而是对于每一弹跳机在 KDT 上查询。
与之类似的,我们还有更优秀的方法。
以下,我们称一个点被扩展,就是说将它的出边进行松弛,说一个点被松弛,就是通过其他点更新了起点到它的最短路长度。
根据 Dijkstra 的性质,距离起点最近的点被扩展后,它就不会再次被扩展。那么对于起点,它会一次性将一个矩形内的节点全部扩展之后,这些点不会再次被扩展,也不可能再被松弛了,因此如果你维护了一个数据结构之类的东西,他们就可以从树上被删除了。
我们用线段树套 set 维护这个即可。