文章目录

题解:AT_joisc2016_j 危険なスケート

由 SunJude 发布

首先发现一次滑冰产生的冰块不会重复利用,也不会对最短路产生阻碍,因为我们可以在第一次到达这个格子的时候就直接去要去的地方。

考虑怎么移动,到达另一个点:

  • 移到相邻的格子,比方说移到右侧的格子,可以通过先往右滑再往左滑来实现,步数为 $2$。
  • 滑到下一个冰块,步数为 $1$。

发现所有的状态都可以通过这两个移动方式转移过来,并且其他的移动方式是不优的。

于是考虑建出图来跑最短路,具体地,把每个点和其相邻的格子连一条边,边权为 $2$,和它能一步滑到的格子连一条边,边权为 $1$,跑一遍最短路就行了。

这样每个点最多有 $8$ 条出边,所以边数是 $O(n)$ 的。时间复杂度 $O(n\log n)$。


暂无评论

发表评论