{题解}[jzoj3405]【NOIP2013模拟】舞台表演

jzoj3405

Description
小X 终于找到了自己的舞台,希望进行一次尽兴的表演。
不妨认为舞台是一个n 行m 列的矩阵,矩阵中的某些方格上堆放了一些装饰物,其他的则是空地。小X 可以在空地上滑动,但不能撞上装饰物或滑出舞台,否则表演就失败了。
小Y 为了让小X 表演得尽量顺畅,提前为小X 写好了每一段时间的移动方向。每个时刻,听话的小X 都会依据小Y 写好的所在时间段的方向(东、西、南、北)向相邻的方格滑动一格。由于小Y 之前没有探查过舞台的情况,如果小X 直接按照小Y 写好的来移动,很容易表演失败。
不过,小Y 是个天使,拥有让小X 停在原地的魔法,也就是某一时刻,小X 以为自己移动了实际上没有移动。为了让小X 表演得尽量完美,小Y 想使小X 在舞台上滑行的路程尽量长(当然不能中途表演失败)。可惜小Y 的智商不足以完成这么复杂的计算,希望你来帮助她决定哪些时刻该使用魔法。当然,她关心的首先是最长的路程是多少。


那么稍微看一下数据,还是很容易想到DP的吧。

所以我们可以先设f[x,y,z]为在(x,y)上,时间为z的最长路程(已走过)。
于是就分了两种情况,施法,或不施法。
时间复杂度O(nmt),然而,对于100%的数据,它太渣了。

于是,我们可以尝试对时间复杂度进行优化。
优化f[x,y,z],即设f[x,y,z]为在(x,y)上,时间段为z的最长路程(已走过)。
可用单调队列把转移时间复杂度优化到O(1)。
复杂度O(nmk)。

Code
{题解}[jzoj3405]【NOIP2013模拟】舞台表演_第1张图片
{题解}[jzoj3405]【NOIP2013模拟】舞台表演_第2张图片

你可能感兴趣的:({题解}[jzoj3405]【NOIP2013模拟】舞台表演)