传送门
思路: dp[i][0]代表由原点到达第i行最左边(y坐标最小)所需要的最小步数, dp[i][1]代表由远点到达第i行最右边(y坐标最大)所需要的最小步数. 第i行如何往第i+1行进行状态转移呢? 这里拿从第i行最左边出发为例.例如dp[i][0]所对应的位置的纵坐标为x,那么从i上到i+1只需要走最大的且=x的可以上升的列,这里可以通过二分进行查找.上到第i+1行之后,再枚举先走到最右再走到最左(dp[i+1][0])和先走到最左再走到最右(dp[i+1][1])的最小步数即可. 从最右边出发同理.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include