很容易想到用f[i][j]
表示前
i
i
i 个横坐标,达到高度
j
j
j 所需要的最小点击数。
上升的过程是完全背包,因为可以无限次上升,下降的过程是01背包,因为一次只能下降一下。
现在可以观察到题目的限制条件如下:
- 不能够触底,即高度为0的位置是不能够存在的。
- 触顶或者超过顶部之后,仍然会回到顶部位置,但不会死亡。
- 途中会出现管道,这些位置是不能够存在的。
对于问题2:
需要枚举超过m的情况,让这些情况都归于m就可以了。
对于问题3:
只需要每次在管道所在的横坐标进行枚举,让指定的高度设置为“无解”就可以了。
输出:
对于第一问就是找到横坐标n位置有无解就可以了。
对于第二问,我们需要先找到最右边的有解的横坐标,然后统计从0到那个坐标有多少管道。