DPDPDPDPDPDPDPDP。。。。
强大的DP。。。
搜的资料上有讲解这题的,一直没看懂,搜了好多人的代码,比较看来,还是资料上的好点。基本完全照抄了。中间还搬错的有,害我找了好长时间。。把那y改成x就OK了,崩溃!
怎么说呢,这种方法还凑合,会思考下这一步为什么这么做,因为DP还是不熟练,自己写的话写不出来。。。
这道题求时间最短,把这个问题分解为,左端到达低端时间最短时间,和右端到达低端最短时间,使用递归。
应该是这样滴,嗯。递归的最底层是地面和最低板的时间,算出这个最短时间然后算高一层到达最低板的时间。。。。。。表达能力真次啊。。。
把资料上的解释摘下来了:
n
此题目的“子问题”是什么呢?
n
Jimmy 跳到一块板上后,可以有两种选择,向左走或向右走。走到左端和走到右端所需的时间,容易算出。
n
如果我们能知道,以左端为起点到达地面的最短时间,和以右端为起点到达地面的最短时间,那么向左走还是向右走,就很容选择了。
n
因此,整个问题就被分解成两个子问题,即Jimmy 所在位置下方第一块板左端为起点到地面的最短时间,和右端为起点到地面的最短时间。这两个子问题在形式上和原问题是完全一致的。
n
代码在编译错误了N次,WA了一次后终于AC。
编译错误是因为资料用了好多C不允许但C++允许的格式。。。崩溃。长记性了。