ABC273F - Hammer 2

考虑区间 \(dp\),我们只考虑那些涉及到新墙的步骤,所以先将所有墙和起点终点离散化,设 \(dp_{l,r,x}\) 表示当前已经探索过 \([l,r]\),目前的人在最左端/最右端。

然后我们进行转移,一种转移是在当前方向转移,一种转移是往相反方向转移,转移代价都是目标和当前位置的差。

我们发现,\([l,r]\) 内的部分我们一定探查过,所以如果当前墙的锤子在 \([l,r]\) 之内,我们一定可以破除当前墙。特别的,如果墙的锤子在当前的区间端点到墙之间,我们也可以破除当前墙。否则不行。

我们从 \(dp_{s,s}\) 开始,找到所有能包含 \(t\) 的方案,取最小值即可。或者记忆化搜索,也很好写。

复杂度 \(O(n^2)\)

posted @ 2023-07-22 16:02  jucason_xu  阅读(17)  评论(0编辑  收藏  举报