加载中...

edu129E (倍增预处理优化dp)

E. Labyrinth Adventures

一道很不错的题,暴力的想法是对于每次询问,逐层 dp,状态转移非常显然。但这样做的复杂度是 \(O(nm)\)

注意到每次只能在相邻层之间转移,对于任意两层之间的转移,我们可以利用倍增来高效实现。具体状态定义:

  • \(dp_{l,x,0/1,0/1}\):从第 \(l\) 层的门 \(0/1\) 出发,到达第 \(l+2^{x}\) 层的门 \(0/1\) 的最短路。

这样,中间的转移过程就只需要跳 \(O(\log n)\) 次,总复杂度优化为了 \(O(n\log n + m\log n)\)

倍增预处理以及倍增优化 dp 的细节见 code。

code

posted @ 2026-05-06 14:05  小橘奏  阅读(20)  评论(0)    收藏  举报